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();