From: Simon Steiner Date: Thu, 11 Oct 2018 14:59:30 +0000 (+0000) Subject: FOP-2821: 1 bit image fails when using PreloaderRawPNG X-Git-Tag: fop-2_4~38 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=73f73dd5b1f4a9693d44d9b975dff293f92823ce;p=xmlgraphics-fop.git FOP-2821: 1 bit image fails when using PreloaderRawPNG git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1843560 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/fop-core/src/main/java/org/apache/fop/render/pdf/AbstractImageAdapter.java b/fop-core/src/main/java/org/apache/fop/render/pdf/AbstractImageAdapter.java index b835de617..c7e516a63 100644 --- a/fop-core/src/main/java/org/apache/fop/render/pdf/AbstractImageAdapter.java +++ b/fop-core/src/main/java/org/apache/fop/render/pdf/AbstractImageAdapter.java @@ -32,6 +32,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.xmlgraphics.image.loader.Image; +import org.apache.xmlgraphics.image.loader.impl.ImageRawPNG; import org.apache.xmlgraphics.image.loader.impl.ImageRendered; import org.apache.xmlgraphics.java2d.color.profile.ColorProfileUtil; @@ -281,12 +282,16 @@ public abstract class AbstractImageAdapter implements PDFImage { dict.put("ColorSpace", indexed); - Raster raster = ((ImageRendered)image).getRenderedImage().getTile(0, 0); - if (raster.getDataBuffer() instanceof DataBufferByte) { - dict.put("BitsPerComponent", icm.getPixelSize()); + int bits = 8; + if (image instanceof ImageRawPNG) { + bits = ((ImageRawPNG) image).getBitDepth(); } else { - dict.put("BitsPerComponent", 8); + Raster raster = ((ImageRendered) image).getRenderedImage().getTile(0, 0); + if (raster.getDataBuffer() instanceof DataBufferByte) { + bits = icm.getPixelSize(); + } } + dict.put("BitsPerComponent", bits); Integer index = getIndexOfFirstTransparentColorInPalette(icm); if (index != null) { diff --git a/fop-core/src/test/java/org/apache/fop/render/pdf/ImageRawPNGAdapterTestCase.java b/fop-core/src/test/java/org/apache/fop/render/pdf/ImageRawPNGAdapterTestCase.java index 9577e2e01..c3b262477 100644 --- a/fop-core/src/test/java/org/apache/fop/render/pdf/ImageRawPNGAdapterTestCase.java +++ b/fop-core/src/test/java/org/apache/fop/render/pdf/ImageRawPNGAdapterTestCase.java @@ -200,4 +200,18 @@ public class ImageRawPNGAdapterTestCase { PDFICCStream iccStream = irpnga.getICCStream(); assertTrue(ColorProfileUtil.isDefaultsRGB(iccStream.getICCProfile())); } + + @Test + public void test1BitPNG() throws IOException { + ImageRawPNG imageRawPNG = new ImageRawPNG(null, null, + new IndexColorModel(1, 1, new byte[3], 0, false), 1, null); + ImageRawPNGAdapter imageRawPNGAdapter = new ImageRawPNGAdapter(imageRawPNG, null); + PDFDocument pdfDocument = new PDFDocument(""); + PDFDictionary pdfDictionary = new PDFDictionary(); + pdfDictionary.setDocument(pdfDocument); + imageRawPNGAdapter.populateXObjectDictionary(pdfDictionary); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + pdfDictionary.output(bos); + assertEquals(bos.toString(), "<< /ColorSpace [/Indexed /DeviceGray 0 <00>] /BitsPerComponent 1 >>"); + } } diff --git a/fop/lib/xmlgraphics-commons-svn-trunk.jar b/fop/lib/xmlgraphics-commons-svn-trunk.jar index df873d2a4..a9e03e1a0 100644 Binary files a/fop/lib/xmlgraphics-commons-svn-trunk.jar and b/fop/lib/xmlgraphics-commons-svn-trunk.jar differ