You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by jo...@apache.org on 2007/12/31 16:22:36 UTC

svn commit: r607739 - /cocoon/trunk/blocks/cocoon-imageop/cocoon-imageop-impl/src/main/java/org/apache/cocoon/reading/imageop/ImageOpReader.java

Author: joerg
Date: Mon Dec 31 07:22:35 2007
New Revision: 607739

URL: http://svn.apache.org/viewvc?rev=607739&view=rev
Log:
COCOON-2048: add workaround for "This method is not supported by this color model" exception

Modified:
    cocoon/trunk/blocks/cocoon-imageop/cocoon-imageop-impl/src/main/java/org/apache/cocoon/reading/imageop/ImageOpReader.java

Modified: cocoon/trunk/blocks/cocoon-imageop/cocoon-imageop-impl/src/main/java/org/apache/cocoon/reading/imageop/ImageOpReader.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-imageop/cocoon-imageop-impl/src/main/java/org/apache/cocoon/reading/imageop/ImageOpReader.java?rev=607739&r1=607738&r2=607739&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-imageop/cocoon-imageop-impl/src/main/java/org/apache/cocoon/reading/imageop/ImageOpReader.java (original)
+++ cocoon/trunk/blocks/cocoon-imageop/cocoon-imageop-impl/src/main/java/org/apache/cocoon/reading/imageop/ImageOpReader.java Mon Dec 31 07:22:35 2007
@@ -244,18 +244,21 @@
             }
         }
         if (newImage == null) {        	
-	        ColorModel cm = image.getColorModel();
-	        if (getLogger().isDebugEnabled()) {
-	            getLogger().debug( "Out Bounds: " + src.getBounds() );
-	        }
-	        newImage = new BufferedImage( cm, src, true, new Hashtable() );
-	        // Not sure what this should really be --------------^^^^^
-        }
-        int minX = newImage.getMinX();
-        int minY = newImage.getMinY();
-        int width = newImage.getWidth();
-        int height = newImage.getHeight();        
-        if(getLogger().isInfoEnabled()) {
+            ColorModel cm = image.getColorModel();
+            if (getLogger().isDebugEnabled()) {
+                getLogger().debug( "Out Bounds: " + src.getBounds() );
+            }
+            // Note: use cm.isAlphaPremultiplied() as third parameter (isRasterPremultiplied)
+            // because this avoids the possible non-working call to cm.coerceData() (eg. with png
+            // images) - see the code of BufferedImage
+            newImage = new BufferedImage(cm, src, cm.isAlphaPremultiplied(), new Hashtable());
+        }
+
+        if (getLogger().isInfoEnabled()) {
+            int minX = newImage.getMinX();
+            int minY = newImage.getMinY();
+            int width = newImage.getWidth();
+            int height = newImage.getHeight();        
             getLogger().info( "Image: " + minX + ", " + minY + ", " + width + ", " + height );
         }
 
@@ -291,28 +294,5 @@
             // Niclas Hedhman: Stream is closed in superclass.
         }
     }
-/*    
-    private void printRaster( WritableRaster r )
-    {
-        DataBuffer data = r.getDataBuffer();
-        int numBanks = data.getNumBanks();
-        int size = data.getSize();
-        for( int i=0 ; i < size ; i++ )
-        {
-            long value = 0;
-            for( int j=0 ; j < numBanks ; j++ )
-            {
-                int v = data.getElem( j, i );
-                if( v < 256 )
-                    value = value << 8 ;
-                else
-                    value = value << 16;
-                value = value + v;
-            }
-            if(getLogger().isDebugEnabled()) {
-                getLogger().debug( Long.toHexString( value ) );
-            }
-        }
-    }
-*/
+
 }