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);
             }