You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2012/05/13 09:22:47 UTC
svn commit: r1337790 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java
Author: lehmi
Date: Sun May 13 07:22:46 2012
New Revision: 1337790
URL: http://svn.apache.org/viewvc?rev=1337790&view=rev
Log:
PDFBOX-1306: fix the smask creation for an image with alpha channel
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java?rev=1337790&r1=1337789&r2=1337790&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java Sun May 13 07:22:46 2012
@@ -16,7 +16,6 @@
*/
package org.apache.pdfbox.pdmodel.graphics.xobject;
-import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Transparency;
import java.awt.color.ColorSpace;
@@ -155,31 +154,14 @@ public class PDJpeg extends PDXObjectIma
BufferedImage alpha = null;
if (bi.getColorModel().hasAlpha())
{
- alpha = new BufferedImage(bi.getWidth(), bi.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
- Graphics2D g = alpha.createGraphics();
- g.setColor(Color.BLACK);
- g.drawRect(0, 0, bi.getWidth(), bi.getHeight());
- g.setColor(Color.WHITE);
- g.drawImage(bi, 0, 0, null);
- int alphaHeight = alpha.getHeight();
- int alphaWidth = alpha.getWidth();
- int whiteRGB = (Color.WHITE).getRGB();
- for(int y = 0; y < alphaHeight; y++)
- {
- for(int x = 0; x < alphaWidth; x++)
- {
- int colorValues = alpha.getRGB(x, y);
- // TODO check condition PDFBOX-626
- if( ((colorValues >> 16) & 0xFF) != 0
- && ((colorValues >> 8) & 0xFF) != 0
- && ((colorValues >> 0) & 0xFF) != 0 )
- {
- alpha.setRGB(x, y, whiteRGB);
- }
- }
- }
- image = new BufferedImage(bi.getWidth(), bi.getHeight(), BufferedImage.TYPE_USHORT_565_RGB);
- g = image.createGraphics();
+ // extract the alpha information
+ WritableRaster alphaRaster = bi.getAlphaRaster();
+ ColorModel cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_GRAY),
+ false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
+ alpha = new BufferedImage(cm, alphaRaster, false, null);
+ // create a RGB image without alpha
+ image = new BufferedImage(bi.getWidth(), bi.getHeight(), BufferedImage.TYPE_INT_RGB);
+ Graphics2D g = image.createGraphics();
g.drawImage(bi, 0, 0, null);
bi = image;
}