Parcourir la source

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
pull/13/head
Simon Steiner il y a 5 ans
Parent
révision
c6fa5cb666

+ 9
- 4
fop-core/src/main/java/org/apache/fop/render/pdf/AbstractImageAdapter.java Voir le fichier

@@ -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) {

+ 14
- 0
fop-core/src/test/java/org/apache/fop/render/pdf/ImageRawPNGAdapterTestCase.java Voir le fichier

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

BIN
fop/lib/xmlgraphics-commons-svn-trunk.jar Voir le fichier


Chargement…
Annuler
Enregistrer