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;
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) {
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 >>");
+ }
}