You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2014/02/20 23:38:37 UTC
svn commit: r1570376 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDImageXObject.java
Author: jahewson
Date: Thu Feb 20 22:38:36 2014
New Revision: 1570376
URL: http://svn.apache.org/r1570376
Log:
Fix issue with masking in PDFBOX-1893
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDImageXObject.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDImageXObject.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDImageXObject.java?rev=1570376&r1=1570375&r2=1570376&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDImageXObject.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDImageXObject.java Thu Feb 20 22:38:36 2014
@@ -146,7 +146,7 @@ public final class PDImageXObject extend
PDImageXObject softMask = getSoftMask();
if (softMask != null)
{
- image = applyMask(image, softMask.getOpaqueImage());
+ image = applyMask(image, softMask.getOpaqueImage(), true);
}
else
{
@@ -154,7 +154,7 @@ public final class PDImageXObject extend
PDImageXObject mask = getMask();
if (mask != null)
{
- image = applyMask(image, mask.getOpaqueImage());
+ image = applyMask(image, mask.getOpaqueImage(), false);
}
}
@@ -188,7 +188,8 @@ public final class PDImageXObject extend
// explicit mask: RGB + Binary -> ARGB
// soft mask: RGB + Gray -> ARGB
- private BufferedImage applyMask(BufferedImage image, BufferedImage mask) throws IOException
+ private BufferedImage applyMask(BufferedImage image, BufferedImage mask, boolean isSoft)
+ throws IOException
{
if (mask == null)
{
@@ -228,7 +229,15 @@ public final class PDImageXObject extend
rgba[0] = rgb[0];
rgba[1] = rgb[1];
rgba[2] = rgb[2];
- rgba[3] = alpha.getPixel(x, y, (float[])null)[0];
+
+ if (isSoft)
+ {
+ rgba[3] = alpha.getPixel(x, y, (float[])null)[0];
+ }
+ else
+ {
+ rgba[3] = 255 - alpha.getPixel(x, y, (float[])null)[0];
+ }
dest.setPixel(x, y, rgba);
}