Author: lryan
Date: Wed Mar  4 19:23:11 2009
New Revision: 750111

URL: http://svn.apache.org/viewvc?rev=750111&view=rev
Log:
Fix for rewriting GIF images that parse to a direct color model instead of an 
indexed color model

Added:
    
incubator/shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/image/directcolor.gif
   (with props)
Modified:
    
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/GIFOptimizer.java
    
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/image/GIFOptimizerTest.java

Modified: 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/GIFOptimizer.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/GIFOptimizer.java?rev=750111&r1=750110&r2=750111&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/GIFOptimizer.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/image/GIFOptimizer.java
 Wed Mar  4 19:23:11 2009
@@ -20,7 +20,6 @@
 import org.apache.shindig.gadgets.http.HttpResponse;
 
 import java.awt.image.BufferedImage;
-import java.awt.image.IndexColorModel;
 import java.io.IOException;
 
 import javax.imageio.ImageIO;
@@ -42,8 +41,10 @@
       // We can rewrite tranparent GIFs to PNG but for IE6 it requires the use 
of
       // the AlphaImageReader and some pain. Deferring this until that is 
proven to work
 
-      // Write to stip any metadata and re-compute the palette
-      write(ImageUtils.palettize(image, 
((IndexColorModel)image.getColorModel()).getMapSize()));
+      // Write to stip any metadata and re-compute the palette. We allow 
arbitrary large palettes
+      // here as if the image is already in a direct color model it will 
already have been
+      // constrained by the max in-mem constraint.
+      write(ImageUtils.palettize(image, Integer.MAX_VALUE));
     } else {
       usePng = true;
       outputter = new 
ImageIOOutputter(ImageIO.getImageWritersByFormatName("png").next(), null);

Modified: 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/image/GIFOptimizerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/image/GIFOptimizerTest.java?rev=750111&r1=750110&r2=750111&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/image/GIFOptimizerTest.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/image/GIFOptimizerTest.java
 Wed Mar  4 19:23:11 2009
@@ -48,6 +48,19 @@
     assertEquals(httpResponse.getHeader("Content-Type"), "image/png");
   }
 
+  /**
+   * This is a GIF image with has a direct color model instead of an indexed 
one and has
+   * tranparency
+   * @throws Exception
+   */
+  public void testDirectColorModelGif() throws Exception {
+    HttpResponse resp =
+        
createResponse("org/apache/shindig/gadgets/rewrite/image/directcolor.gif", 
"image/gif");
+    HttpResponse httpResponse = rewrite(resp);
+    assertTrue(httpResponse.getContentLength() <= resp.getContentLength());
+    assertEquals(httpResponse.getHeader("Content-Type"), "image/gif");
+  }
+
   protected HttpResponse rewrite(HttpResponse original)
       throws IOException, ImageReadException {
     return new GIFOptimizer(new OptimizerConfig(), original).rewrite(

Added: 
incubator/shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/image/directcolor.gif
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/image/directcolor.gif?rev=750111&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
incubator/shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/image/directcolor.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream


Reply via email to