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 2014/05/08 18:48:55 UTC

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

Author: tilman
Date: Thu May  8 16:48:55 2014
New Revision: 1593329

URL: http://svn.apache.org/r1593329
Log:
PDFBOX-2057: simplified getAlphaImage() as suggested by Juraj Lonc

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/ImageFactory.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/ImageFactory.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/ImageFactory.java?rev=1593329&r1=1593328&r2=1593329&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/ImageFactory.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/ImageFactory.java Thu May  8 16:48:55 2014
@@ -21,17 +21,9 @@ import org.apache.pdfbox.pdmodel.graphic
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceGray;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;
 
-import java.awt.AlphaComposite;
-import java.awt.Graphics2D;
-import java.awt.Transparency;
 import java.awt.color.ColorSpace;
 import java.awt.color.ICC_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.DataBufferInt;
 import java.awt.image.WritableRaster;
 
 /**
@@ -90,43 +82,9 @@ class ImageFactory
         {
             return null;
         }
-        BufferedImage alphaImage = null;
         WritableRaster alphaRaster = image.getAlphaRaster();
-        DataBuffer dbSrc = alphaRaster.getDataBuffer();
-        if (dbSrc instanceof DataBufferInt)
-        {
-            // PDFBOX-2057, handle TYPE_INT_A... types
-            // See also
-            // http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4243485
-
-            alphaImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
-            DataBuffer dbDst = alphaImage.getRaster().getDataBuffer();
-            // alpha value is in the highest byte
-            for (int i = 0; i < dbSrc.getSize(); ++i)
-            {
-                dbDst.setElem(i, dbSrc.getElem(i) >>> 24);
-            }
-        }
-        else if (dbSrc instanceof DataBufferByte)
-        {
-            alphaImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
-            DataBuffer dbDst = alphaImage.getRaster().getDataBuffer();
-            // alpha value is at bytes 0...4...8...
-            for (int i = 0; i < dbDst.getSize(); ++i)
-            {
-                dbDst.setElem(i, dbSrc.getElem(i << 2));
-            }
-        }
-        else
-        {
-            // This didn't work for INT types, see PDFBOX-2057. The raster returned has a
-            // SinglePixelPackedSampleModel, and ComponentColorModel created is not
-            // compatible with it, because the BufferedImage constructor expects a
-            // ComponentSampleModel, and with the same number of bands.
-            ColorModel cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_GRAY),
-                    false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
-            alphaImage = new BufferedImage(cm, alphaRaster, false, null);
-        }
+        BufferedImage alphaImage = new BufferedImage(alphaRaster.getWidth(), alphaRaster.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
+        alphaImage.setData(alphaRaster);
         return alphaImage;
     }