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 2013/01/13 11:29:33 UTC

svn commit: r1432578 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java

Author: lehmi
Date: Sun Jan 13 10:29:32 2013
New Revision: 1432578

URL: http://svn.apache.org/viewvc?rev=1432578&view=rev
Log:
PDFBOX-1491: avoid NPE if an image mask uses colour key masking

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java?rev=1432578&r1=1432577&r2=1432578&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java Sun Jan 13 10:29:32 2013
@@ -175,20 +175,30 @@ public abstract class PDXObjectImage ext
     public BufferedImage mask(BufferedImage baseImage) 
     	throws IOException
     {
-    	PDXObjectImage maskImageRef = (PDXObjectImage)PDXObject.createXObject(getMask());
-    	BufferedImage maskImage = maskImageRef.getRGBImage();
-   	 	if(maskImage == null)
-   	 	{
-	   		 LOG.warn("masking getRGBImage returned NULL");
-	   		 return baseImage;
-   	 	}
-   	 
-	   	 BufferedImage newImage = new BufferedImage( maskImage.getWidth(), maskImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
-	   	 Graphics2D graphics = (Graphics2D)newImage.getGraphics();
-	   	 graphics.drawImage(baseImage, 0, 0, maskImage.getWidth(), maskImage.getHeight(), 0, 0, baseImage.getWidth(), baseImage.getHeight(), null);   
-	   	 graphics.setComposite(AlphaComposite.DstIn);
-	   	 graphics.drawImage(maskImage, null, 0, 0);
-	   	 return newImage;
+        COSBase mask = getMask();
+        if (mask instanceof COSStream)
+        {
+        	PDXObjectImage maskImageRef = (PDXObjectImage)PDXObject.createXObject((COSStream)mask);
+        	BufferedImage maskImage = maskImageRef.getRGBImage();
+       	 	if(maskImage == null)
+       	 	{
+    	   		 LOG.warn("masking getRGBImage returned NULL");
+    	   		 return baseImage;
+       	 	}
+       	 
+    	   	 BufferedImage newImage = new BufferedImage( maskImage.getWidth(), maskImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
+    	   	 Graphics2D graphics = (Graphics2D)newImage.getGraphics();
+    	   	 graphics.drawImage(baseImage, 0, 0, maskImage.getWidth(), maskImage.getHeight(), 0, 0, baseImage.getWidth(), baseImage.getHeight(), null);   
+    	   	 graphics.setComposite(AlphaComposite.DstIn);
+    	   	 graphics.drawImage(maskImage, null, 0, 0);
+    	   	 return newImage;
+        }
+        else
+        {
+            // TODO Colour key masking
+            LOG.warn("Colour key masking isn't supported");
+            return baseImage;
+        }
     }
 
     /**