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 2014/01/16 07:33:39 UTC

svn commit: r1558702 - in /pdfbox/branches/1.8: ./ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java

Author: lehmi
Date: Thu Jan 16 06:33:38 2014
New Revision: 1558702

URL: http://svn.apache.org/r1558702
Log:
PDFBOX-1829: avoid NPE when creating a smasked image

Modified:
    pdfbox/branches/1.8/   (props changed)
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java

Propchange: pdfbox/branches/1.8/
------------------------------------------------------------------------------
  Merged /pdfbox/trunk:r1555186

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java?rev=1558702&r1=1558701&r2=1558702&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java Thu Jan 16 06:33:38 2014
@@ -137,24 +137,32 @@ public abstract class PDXObjectImage ext
     
     public BufferedImage applyMasks(BufferedImage baseImage) throws IOException
     {
-    	if (getImageMask())
-    	{
-    		return imageMask(baseImage);
-    	}
-    	if(getMask() != null)
-    	{
-    		return mask(baseImage);
-    	}
-    	PDXObjectImage smask = getSMaskImage();
-    	if(smask != null)
-    	{
-    		BufferedImage smaskBI = smask.getRGBImage();
-    		COSArray decodeArray = smask.getDecode();
-    		CompositeImage compositeImage = new CompositeImage(baseImage, smaskBI);
-    		BufferedImage rgbImage = compositeImage.createMaskedImage(decodeArray);
-        	return rgbImage;
-    	}
-    	return baseImage;
+        if (getImageMask())
+        {
+            return imageMask(baseImage);
+        }
+        if (getMask() != null)
+        {
+            return mask(baseImage);
+        }
+        PDXObjectImage smask = getSMaskImage();
+        if (smask != null)
+        {
+            BufferedImage smaskBI = smask.getRGBImage();
+            if (smaskBI != null)
+            {
+	            COSArray decodeArray = smask.getDecode();
+	            CompositeImage compositeImage = new CompositeImage(baseImage, smaskBI);
+	            BufferedImage rgbImage = compositeImage.createMaskedImage(decodeArray);
+	            return rgbImage;
+            }
+            else
+            {
+            	// this may happen if the smask is somehow broken, e.g. unsupported filter
+                LOG.warn("masking getRGBImage returned NULL");
+            }
+        }
+        return baseImage;
     }
     
     public boolean hasMask() throws IOException