You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by da...@apache.org on 2012/04/27 10:21:26 UTC

svn commit: r1331291 - in /commons/proper/imaging/trunk/src: main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/PhotometricInterpreterPalette.java test/data/images/tiff/4/ test/data/images/tiff/4/IndexColorPalette.tif

Author: damjan
Date: Fri Apr 27 08:21:25 2012
New Revision: 1331291

URL: http://svn.apache.org/viewvc?rev=1331291&view=rev
Log:
Speed up reading paletted TIFF files.

Jira issue key: SANSELAN-75
Submitted by: Gary Lucas <gwlucas at sonalysts dot com>


Added:
    commons/proper/imaging/trunk/src/test/data/images/tiff/4/
    commons/proper/imaging/trunk/src/test/data/images/tiff/4/IndexColorPalette.tif   (with props)
Modified:
    commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/PhotometricInterpreterPalette.java

Modified: commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/PhotometricInterpreterPalette.java
URL: http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/PhotometricInterpreterPalette.java?rev=1331291&r1=1331290&r2=1331291&view=diff
==============================================================================
--- commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/PhotometricInterpreterPalette.java (original)
+++ commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/photometricinterpreters/PhotometricInterpreterPalette.java Fri Apr 27 08:21:25 2012
@@ -24,6 +24,13 @@ import org.apache.commons.imaging.common
 public class PhotometricInterpreterPalette extends PhotometricInterpreter
 {
     private final int[] fColorMap;
+    
+    /** 
+     * The color map of integer ARGB values tied to the 
+     * pixel index of the palette
+     */
+    private final int[] indexColorMap;
+
 
     public PhotometricInterpreterPalette(int fSamplesPerPixel,
             int fBitsPerSample[], int Predictor, int width, int height,
@@ -32,24 +39,26 @@ public class PhotometricInterpreterPalet
         super(fSamplesPerPixel, fBitsPerSample, Predictor, width, height);
 
         this.fColorMap = fColorMap;
+
+        int fBitsPerPixel = bitsPerSample[0];
+        int colormap_scale = (1 << fBitsPerPixel);
+        indexColorMap = new int[colormap_scale];
+        for (int index = 0; index < colormap_scale; index++)
+        {
+            int red   = (fColorMap[index]>>8)&0xff;
+            int green = (fColorMap[index + (colormap_scale)]>>8)&0xff;
+            int blue  = (fColorMap[index + (2 * colormap_scale)]>>8)&0xff;
+            indexColorMap[index] =
+                    0xff000000 | (red << 16) | (green << 8) | blue;
+        }
+
+
     }
 
     @Override
     public void interpretPixel(ImageBuilder imageBuilder, int samples[], int x, int y)
             throws ImageReadException, IOException
     {
-        int fBitsPerPixel = bitsPerSample[0];
-        int colormap_scale = (1 << fBitsPerPixel);
-        //            int expected_colormap_size = 3 * (1 << fBitsPerPixel);
-
-        int index = samples[0];
-        int red = fColorMap[index] >> 8;
-        int green = fColorMap[index + (colormap_scale)] >> 8;
-        int blue = fColorMap[index + (2 * colormap_scale)] >> 8;
-
-        int alpha = 0xff;
-        int rgb = (alpha << 24) | (red << 16) | (green << 8) | (blue << 0);
-        imageBuilder.setRGB(x, y, rgb);
-
+        imageBuilder.setRGB(x, y, indexColorMap[samples[0]]);
     }
 }
\ No newline at end of file

Added: commons/proper/imaging/trunk/src/test/data/images/tiff/4/IndexColorPalette.tif
URL: http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/test/data/images/tiff/4/IndexColorPalette.tif?rev=1331291&view=auto
==============================================================================
Binary file - no diff available.

Propchange: commons/proper/imaging/trunk/src/test/data/images/tiff/4/IndexColorPalette.tif
------------------------------------------------------------------------------
    svn:mime-type = image/tiff