You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2020/01/07 20:09:56 UTC
svn commit: r1872459 -
/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractImages.java
Author: tilman
Date: Tue Jan 7 20:09:56 2020
New Revision: 1872459
URL: http://svn.apache.org/viewvc?rev=1872459&view=rev
Log:
PDFBOX-4734: create CCITT G4 compressed TIFF files when possible
Modified:
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractImages.java
Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractImages.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractImages.java?rev=1872459&r1=1872458&r2=1872459&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractImages.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractImages.java Tue Jan 7 20:09:56 2020
@@ -422,6 +422,24 @@ public final class ExtractImages
ImageIOUtil.writeImage(image, "jpeg2000", out);
}
}
+ else if ("tiff".equals(suffix) && pdImage.getColorSpace().equals(PDDeviceGray.INSTANCE))
+ {
+ // CCITT compressed images can have a different colorspace, but this one is B/W
+ // This is a bitonal image, so copy to TYPE_BYTE_BINARY
+ // so that a G4 compressed TIFF image is created by ImageIOUtil.writeImage()
+ int w = image.getWidth();
+ int h = image.getHeight();
+ BufferedImage bitonalImage = new BufferedImage(w, h, BufferedImage.TYPE_BYTE_BINARY);
+ // copy image the old fashioned way - ColorConvertOp is slower!
+ for (int y = 0; y < h; y++)
+ {
+ for (int x = 0; x < w; x++)
+ {
+ bitonalImage.setRGB(x, y, image.getRGB(x, y));
+ }
+ }
+ ImageIOUtil.writeImage(bitonalImage, suffix, out);
+ }
else
{
ImageIOUtil.writeImage(image, suffix, out);