r9989 - helma/helma/trunk/src/helma/image/imageio

[email protected] Mon, 16 Nov 2009 14:47:46 +0100 (CET)
Newsgroups gmane.comp.java.helma.cvs
Message-ID <20091116134746.71AFF3D0E2@mia>
Author: lehni
Date: 2009-11-16 14:47:46 +0100 (Mon, 16 Nov 2009)
New Revision: 9989

Modified:
   helma/helma/trunk/src/helma/image/imageio/ImageIOGenerator.java
Log:
Fix IllegalStateException when saving as GIF, see bug 683.

Details at http://dev.helma.org/trac/helma/changeset/9989

Modified: helma/helma/trunk/src/helma/image/imageio/ImageIOGenerator.java
===================================================================
--- helma/helma/trunk/src/helma/image/imageio/ImageIOGenerator.java	2009-11-10 08:51:27 UTC (rev 9988)
+++ helma/helma/trunk/src/helma/image/imageio/ImageIOGenerator.java	2009-11-16 13:47:46 UTC (rev 9989)
@@ -22,18 +22,24 @@
 
 package helma.image.imageio;
 
-import java.awt.Image;
-import java.awt.image.*;
-import java.io.*;
-import java.net.URL;
+import helma.image.ImageGenerator;
+import helma.image.ImageWrapper;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.DirectColorModel;
+import java.awt.image.WritableRaster;
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
 import java.util.Iterator;
 
-import javax.imageio.*;
+import javax.imageio.IIOImage;
+import javax.imageio.ImageIO;
+import javax.imageio.ImageWriteParam;
+import javax.imageio.ImageWriter;
 import javax.imageio.stream.ImageOutputStream;
 
-import helma.image.*;
 
-
 /**
  * A wrapper for an image that uses the ImageIO Framework.
  */
@@ -46,6 +52,13 @@
         if (param.canWriteCompressed() &&
             quality >= 0.0 && quality <= 1.0) {
             param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+            String[] types = param.getCompressionTypes();
+            // If compression types are defined, but none is set, set the first one,
+            // since setCompressionQuality, which requires MODE_EXPLICIT to be set,
+            // will complain otherwise. 
+            if (types != null && param.getCompressionType() == null) {
+                param.setCompressionType(types[0]);
+            }
             param.setCompressionQuality(quality);
         }
         if (param.canWriteProgressive())