Author: tilman
Date: Wed Aug 12 10:09:02 2026
New Revision: 1937077

Log:
PDFBOX-6235: use the stream generated image as expected image to make a weak 
compare; rename variable

Modified:
   
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java

Modified: 
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java
==============================================================================
--- 
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java
      Wed Aug 12 10:08:59 2026        (r1937076)
+++ 
pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java
      Wed Aug 12 10:09:02 2026        (r1937077)
@@ -137,13 +137,18 @@ class JPEGFactoryTest
     @Test
     void testCreateFromImageRGB() throws IOException
     {
+        byte[] ba;
         try (InputStream is = 
JPEGFactoryTest.class.getResourceAsStream("jpeg.jpg"))
         {
+            ba = IOUtils.toByteArray(is);
             PDDocument document = new PDDocument();
-            BufferedImage image = ImageIO.read(is);
+            BufferedImage image = ImageIO.read(new ByteArrayInputStream(ba));
             assertEquals(3, image.getColorModel().getNumComponents());
             PDImageXObject ximage = JPEGFactory.createFromImage(document, 
image);
             validate(ximage, 8, 344, 287, "jpg", 
PDDeviceRGB.INSTANCE.getName());
+            BufferedImage expected = JPEGFactory.createFromStream(document, 
new ByteArrayInputStream(ba)).getImage();
+            float meanAbsDiffPerPixel = computeMeanAbsDiffPerPixel(expected, 
ximage.getImage());
+            assertTrue(meanAbsDiffPerPixel < 5);
 
             doWritePDF(document, ximage, TESTRESULTSDIR, "jpegrgb.pdf");
         }
@@ -156,13 +161,18 @@ class JPEGFactoryTest
     @Test
     void testCreateFromImage256() throws IOException
     {
+        byte[] ba;
         try (InputStream is = 
JPEGFactoryTest.class.getResourceAsStream("jpeg256.jpg"))
         {
+            ba = IOUtils.toByteArray(is);
             PDDocument document = new PDDocument();
-            BufferedImage image = ImageIO.read(is);
+            BufferedImage image = ImageIO.read(new ByteArrayInputStream(ba));
             assertEquals(1, image.getColorModel().getNumComponents());
             PDImageXObject ximage = JPEGFactory.createFromImage(document, 
image);
             validate(ximage, 8, 344, 287, "jpg", 
PDDeviceGray.INSTANCE.getName());
+            BufferedImage expected = JPEGFactory.createFromStream(document, 
new ByteArrayInputStream(ba)).getImage();
+            float meanAbsDiffPerPixel = computeMeanAbsDiffPerPixel(expected, 
ximage.getImage());
+            assertTrue(meanAbsDiffPerPixel < 5);
 
             doWritePDF(document, ximage, TESTRESULTSDIR, "jpeg256.pdf");
         }
@@ -277,10 +287,12 @@ class JPEGFactoryTest
         {
             return;
         }
+        byte[] ba;
         try (InputStream is = 
JPEGFactoryTest.class.getResourceAsStream("jpeg.jpg"))
         {
+            ba = IOUtils.toByteArray(is);
             PDDocument document = new PDDocument();
-            BufferedImage image = ImageIO.read(is);
+            BufferedImage image = ImageIO.read(new ByteArrayInputStream(ba));
 
             // create an USHORT_555_RGB image
             int width = image.getWidth();
@@ -301,6 +313,9 @@ class JPEGFactoryTest
             PDImageXObject ximage = JPEGFactory.createFromImage(document, 
rgbImage);
             validate(ximage, 8, width, height, "jpg", 
PDDeviceRGB.INSTANCE.getName());
             assertNull(ximage.getSoftMask());
+            BufferedImage expected = JPEGFactory.createFromStream(document, 
new ByteArrayInputStream(ba)).getImage();
+            float meanAbsDiffPerPixel = computeMeanAbsDiffPerPixel(expected, 
ximage.getImage());
+            assertTrue(meanAbsDiffPerPixel < 5);
 
             doWritePDF(document, ximage, TESTRESULTSDIR, 
"jpeg-ushort555rgb.pdf");
         }
@@ -351,20 +366,20 @@ class JPEGFactoryTest
             ba = IOUtils.toByteArray(is);
         }
         reader.setInput(new MemoryCacheImageInputStream(new 
ByteArrayInputStream(ba)));
-        BufferedImage bim = reader.read(0);
+        BufferedImage image = reader.read(0);
 
         // This test works only with the original java imaging, not with 
twelvemonkeys
-        assertEquals(ColorSpace.TYPE_CMYK, 
bim.getColorModel().getColorSpace().getType());
-        assertEquals(BufferedImage.TYPE_CUSTOM, bim.getType());
-        assertEquals(4, bim.getColorModel().getNumComponents());
+        assertEquals(ColorSpace.TYPE_CMYK, 
image.getColorModel().getColorSpace().getType());
+        assertEquals(BufferedImage.TYPE_CUSTOM, image.getType());
+        assertEquals(4, image.getColorModel().getNumComponents());
 
         PDDocument document = new PDDocument();
-        PDImageXObject ximage = JPEGFactory.createFromImage(document, bim);
+        PDImageXObject ximage = JPEGFactory.createFromImage(document, image);
         validate(ximage, 8, 200, 200, "jpg", PDDeviceCMYK.INSTANCE.getName());
         // the samples are inverted, so a /Decode array is required
         assertArrayEquals(new float[] { 1, 0, 1, 0, 1, 0, 1, 0 }, 
ximage.getDecode().toFloatArray());
 
-        // using the one created from the stream is more reliable than using 
"bim"
+        // using the one created from the stream is more reliable than using 
"image"
         // because of flaws in converting CMYK to RGB
         // See https://stackoverflow.com/questions/19540064/
         BufferedImage expected = JPEGFactory.createFromStream(document, new 
ByteArrayInputStream(ba)).getImage();

Reply via email to