svn commit: r1584921 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java

2014-04-04 Thread jahewson
Author: jahewson
Date: Fri Apr  4 21:26:49 2014
New Revision: 1584921

URL: http://svn.apache.org/r1584921
Log:
PDFBOX-2007: clean up

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java?rev=1584921&r1=1584920&r2=1584921&view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java
 Fri Apr  4 21:26:49 2014
@@ -51,7 +51,6 @@ import org.apache.pdfbox.pdmodel.common.
 final class SampledImageReader
 {
 private static final Log LOG = LogFactory.getLog(SampledImageReader.class);
-private static final ColorSpace COLOR_SPACE_RGB = 
ColorSpace.getInstance(ColorSpace.CS_sRGB);
 
 /**
  * Returns an ARGB image filled with the given paint and using the given 
image as a mask.




svn commit: r1584914 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics: color/PDColorSpace.java color/PDDeviceRGB.java image/SampledImageReader.java

2014-04-04 Thread jahewson
Author: jahewson
Date: Fri Apr  4 21:17:06 2014
New Revision: 1584914

URL: http://svn.apache.org/r1584914
Log:
PDFBOX-2007: Speed up SampledImageReader for common 8-bit images

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceRGB.java

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java?rev=1584914&r1=1584913&r2=1584914&view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java
 Fri Apr  4 21:17:06 2014
@@ -216,7 +216,7 @@ public abstract class PDColorSpace imple
 
 // ICC Profile color transforms are only fast when performed using 
ColorConvertOp
 ColorModel colorModel = new ComponentColorModel(colorSpace,
-false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
+false, false, Transparency.OPAQUE, 
raster.getDataBuffer().getDataType());
 
 BufferedImage src = new BufferedImage(colorModel, raster, false, null);
 BufferedImage dest = new BufferedImage(raster.getWidth(), 
raster.getHeight(),

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceRGB.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceRGB.java?rev=1584914&r1=1584913&r2=1584914&view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceRGB.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceRGB.java
 Fri Apr  4 21:17:06 2014
@@ -86,7 +86,7 @@ public final class PDDeviceRGB extends P
 public BufferedImage toRGBImage(WritableRaster raster) throws IOException
 {
 ColorModel colorModel = new ComponentColorModel(COLOR_SPACE_RGB,
-false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
+false, false, Transparency.OPAQUE, 
raster.getDataBuffer().getDataType());
 
 return new BufferedImage(colorModel, raster, false, null);
 }

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java?rev=1584914&r1=1584913&r2=1584914&view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java
 Fri Apr  4 21:17:06 2014
@@ -19,15 +19,24 @@ package org.apache.pdfbox.pdmodel.graphi
 import java.awt.Graphics2D;
 import java.awt.Paint;
 import java.awt.Point;
+import java.awt.Transparency;
+import java.awt.color.ColorSpace;
 import java.awt.image.BufferedImage;
+import java.awt.image.ColorModel;
+import java.awt.image.ComponentColorModel;
 import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+import java.awt.image.PackedColorModel;
 import java.awt.image.Raster;
 import java.awt.image.WritableRaster;
 import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.pdfbox.cos.COSArray;
+import org.apache.pdfbox.io.IOUtils;
 import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
 import org.apache.pdfbox.pdmodel.graphics.color.PDIndexed;
 
@@ -42,6 +51,7 @@ import org.apache.pdfbox.pdmodel.common.
 final class SampledImageReader
 {
 private static final Log LOG = LogFactory.getLog(SampledImageReader.class);
+private static final ColorSpace COLOR_SPACE_RGB = 
ColorSpace.getInstance(ColorSpace.CS_sRGB);
 
 /**
  * Returns an ARGB image filled with the given paint and using the given 
image as a mask.
@@ -138,6 +148,64 @@ final class SampledImageReader
 WritableRaster raster = 
Raster.createBandedRaster(DataBuffer.TYPE_BYTE, width, height,
 numComponents, new Point(0, 0));
 
+// convert image, faster path for non-decoded, non-colormasked 8-bit 
images
+final float[] defaultDecode = 
pdImage.getColorSpace().getDefaultDecode(8);
+if (bitsPerComponent == 8 && Arrays.equals(decode, defaultDe

svn commit: r1584837 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java

2014-04-04 Thread tilman
Author: tilman
Date: Fri Apr  4 17:56:37 2014
New Revision: 1584837

URL: http://svn.apache.org/r1584837
Log:
PDFBOX-2007: optimize fromBGRtoRGB()

Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java?rev=1584837&r1=1584836&r2=1584837&view=diff
==
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java 
Fri Apr  4 17:56:37 2014
@@ -194,20 +194,22 @@ final class DCTFilter extends Filter
 {
 WritableRaster writableRaster = 
raster.createCompatibleWritableRaster();
 
-int[] bgr = new int[3];
-int[] rgb = new int[3];
-for (int y = 0, height = raster.getHeight(); y < height; y++)
+int width = raster.getWidth();
+int height = raster.getHeight();
+int w3 = width * 3;
+int[] tab = new int[w3];
+//BEWARE: handling the full image at a time is slower than one line at 
a time
+for (int y = 0; y < height; y++)
 {
-for (int x = 0, width = raster.getWidth(); x < width; x++)
+raster.getPixels(0, y, width, 1, tab);
+for (int off = 0; off < w3; off += 3)
 {
-raster.getPixel(x, y, bgr);
-rgb[0] = bgr[2];
-rgb[1] = bgr[1];
-rgb[2] = bgr[0];
-writableRaster.setPixel(x, y, rgb);
+int tmp = tab[off];
+tab[off] = tab[off + 2];
+tab[off + 2] = tmp;
 }
+writableRaster.setPixels(0, y, width, 1, tab);
 }
-
 return writableRaster;
 }