protected BufferedImage readGif(HttpResponseBuilder response) throws ImageReadException, IOException { return GIFOptimizer.readGif(response.getContentBytes()); }
private void applyOptimizer(HttpResponseBuilder response, ImageFormat imageFormat, BufferedImage image) throws IOException { if (imageFormat == ImageFormat.IMAGE_FORMAT_GIF) { // Detecting the existence of the NETSCAPE2.0 extension by string comparison // is not exactly clean but is good enough to determine if a GIF is animated // Remove once Sanselan returns image count if (!response.create().getResponseAsString().contains("NETSCAPE2.0")) { new GIFOptimizer(config, response).rewrite(image); } } else if (imageFormat == ImageFormat.IMAGE_FORMAT_PNG) { new PNGOptimizer(config, response).rewrite(image); } else if (imageFormat == ImageFormat.IMAGE_FORMAT_JPEG) { new JPEGOptimizer(config, response).rewrite(image); } else if (imageFormat == ImageFormat.IMAGE_FORMAT_BMP) { new BMPOptimizer(config, response).rewrite(image); } }
@Override protected void rewriteImpl(BufferedImage image) throws IOException { if (!ImageUtils.isOpaque(image)) { // We can rewrite transparent 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 strip 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); super.rewriteImpl(image); } }
private void applyOptimizer(HttpResponseBuilder response, ImageFormat imageFormat, BufferedImage image) throws IOException { if (imageFormat == ImageFormat.IMAGE_FORMAT_GIF) { // Detecting the existence of the NETSCAPE2.0 extension by string comparison // is not exactly clean but is good enough to determine if a GIF is animated // Remove once Sanselan returns image count if (!response.create().getResponseAsString().contains("NETSCAPE2.0")) { new GIFOptimizer(config, response).rewrite(image); } } else if (imageFormat == ImageFormat.IMAGE_FORMAT_PNG) { new PNGOptimizer(config, response).rewrite(image); } else if (imageFormat == ImageFormat.IMAGE_FORMAT_JPEG) { new JPEGOptimizer(config, response).rewrite(image); } else if (imageFormat == ImageFormat.IMAGE_FORMAT_BMP) { new BMPOptimizer(config, response).rewrite(image); } }
@Override protected void rewriteImpl(BufferedImage image) throws IOException { if (!ImageUtils.isOpaque(image)) { // We can rewrite transparent 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 strip 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); super.rewriteImpl(image); } }
protected void applyOptimizer(HttpResponseBuilder response, ImageFormat imageFormat, JpegImageUtils.JpegImageParams jpegImageParams, BufferedImage image, OptimizerConfig config) throws IOException { if (imageFormat == ImageFormat.IMAGE_FORMAT_GIF) { // Detecting the existence of the NETSCAPE2.0 extension by string comparison // is not exactly clean but is good enough to determine if a GIF is animated // Remove once Sanselan returns image count if (!response.create().getResponseAsString().contains("NETSCAPE2.0")) { new GIFOptimizer(config, response).rewrite(image); } } else if (imageFormat == ImageFormat.IMAGE_FORMAT_PNG) { new PNGOptimizer(config, response).rewrite(image); } else if (imageFormat == ImageFormat.IMAGE_FORMAT_JPEG) { new JPEGOptimizer(config, response, jpegImageParams).rewrite(image); } else if (imageFormat == ImageFormat.IMAGE_FORMAT_BMP) { new BMPOptimizer(config, response).rewrite(image); } }
protected BufferedImage readGif(HttpResponseBuilder response) throws ImageReadException, IOException { return GIFOptimizer.readGif(response.getContentBytes()); }
@Override protected void rewriteImpl(BufferedImage image) throws IOException { if (!ImageUtils.isOpaque(image)) { // We can rewrite transparent 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 strip 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); super.rewriteImpl(image); } }
protected HttpResponse rewrite(HttpResponse original) throws IOException, ImageReadException { HttpResponseBuilder builder = new HttpResponseBuilder(original); new GIFOptimizer(new OptimizerConfig(), builder).rewrite( Sanselan.getBufferedImage(original.getResponse())); return builder.create(); } }
protected BufferedImage readGif(HttpResponseBuilder response) throws ImageReadException, IOException { return GIFOptimizer.readGif(response.getContentBytes()); }
protected HttpResponse rewrite(HttpResponse original) throws IOException, ImageReadException { HttpResponseBuilder builder = new HttpResponseBuilder(original); new GIFOptimizer(new OptimizerConfig(), builder).rewrite( Sanselan.getBufferedImage(original.getResponse())); return builder.create(); } }
protected HttpResponse rewrite(HttpResponse original) throws IOException, ImageReadException { HttpResponseBuilder builder = new HttpResponseBuilder(original); new GIFOptimizer(new OptimizerConfig(), builder).rewrite( Sanselan.getBufferedImage(original.getResponse())); return builder.create(); } }