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