Author: tilman
Date: Wed Aug 12 10:08:59 2026
New Revision: 1937076

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

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

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java
     Wed Aug 12 10:08:56 2026        (r1937075)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java
     Wed Aug 12 10:08:59 2026        (r1937076)
@@ -136,13 +136,18 @@ class JPEGFactoryTest
     @Test
     void testCreateFromImageRGB() throws IOException
     {
+        byte[] ba;
         try (InputStream is = 
JPEGFactoryTest.class.getResourceAsStream("jpeg.jpg"))
         {
+            ba = is.readAllBytes();
             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");
         }
@@ -155,13 +160,18 @@ class JPEGFactoryTest
     @Test
     void testCreateFromImage256() throws IOException
     {
+        byte[] ba;
         try (InputStream is = 
JPEGFactoryTest.class.getResourceAsStream("jpeg256.jpg"))
         {
+            ba = is.readAllBytes();
             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");
         }
@@ -251,10 +261,12 @@ class JPEGFactoryTest
     @Test
     void testCreateFromImageUSHORT_555_RGB() throws IOException
     {
+        byte[] ba;
         try (InputStream is = 
JPEGFactoryTest.class.getResourceAsStream("jpeg.jpg"))
         {
+            ba = is.readAllBytes();
             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();
@@ -275,6 +287,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");
         }
@@ -325,24 +340,23 @@ class JPEGFactoryTest
             ba = is.readAllBytes();
         }
         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();
-
         float meanAbsDiffPerPixel = computeMeanAbsDiffPerPixel(expected, 
ximage.getImage());
         assertTrue(meanAbsDiffPerPixel < 1);
 

Reply via email to