You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by lr...@apache.org on 2009/03/04 20:23:12 UTC

svn commit: r750111 - in /incubator/shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/rewrite/image/ test/java/org/apache/shindig/gadgets/rewrite/image/ test/resources/org/apache/shindig/gadgets/rewrite/image/

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