protected BufferedImage readJpeg(HttpResponseBuilder response) throws ImageReadException, IOException { return JPEGOptimizer.readJpeg(response.getContentBytes()); } }
HttpResponse rewrite(HttpResponse original, OptimizerConfig config) throws IOException, ImageReadException { HttpResponseBuilder builder = new HttpResponseBuilder(original); new JPEGOptimizer(config, builder, JpegImageUtils.getJpegImageData(builder.getContentBytes(), "")) .rewrite(JPEGOptimizer.readJpeg(original.getResponse())); return builder.create(); }
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); } }
rgbOnlyImage.getGraphics().drawImage(bufferedImage, 0, 0, null); JPEGOptimizer jpegOptimizer = new JPEGOptimizer(config, response); outputter = jpegOptimizer.getOutputter(); write(rgbOnlyImage);
@Override protected void rewriteImpl(BufferedImage image) throws IOException { // Create a new optimizer config and disable JPEG conversion OptimizerConfig pngConfig = new OptimizerConfig(config.getMaxInMemoryBytes(), config.getMaxPaletteSize(), false, config.getJpegCompression(), config.getMinThresholdBytes()); // Output the image as PNG PNGOptimizer pngOptimizer = new PNGOptimizer(pngConfig, response); pngOptimizer.rewriteImpl(image); int pngLength = Integer.MAX_VALUE; if (pngOptimizer.getRewrittenImage() != null) { // PNG was better than original so use it minBytes = pngOptimizer.getRewrittenImage(); minLength = minBytes.length; pngLength = minLength; } // Write as standard JPEG using the configured default compression level write(image); // JPEG did not beat PNG if (pngLength == minLength) { usePng = true; } }
HttpResponse rewrite(HttpResponse original, OptimizerConfig config) throws IOException, ImageReadException { HttpResponseBuilder builder = new HttpResponseBuilder(original); new JPEGOptimizer(config, builder, JpegImageUtils.getJpegImageData(builder.getContentBytes(), "")) .rewrite(JPEGOptimizer.readJpeg(original.getResponse())); return builder.create(); }
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 { // Create a new optimizer config and disable JPEG conversion OptimizerConfig pngConfig = new OptimizerConfig(config.getMaxInMemoryBytes(), config.getMaxPaletteSize(), false, config.getJpegCompression(), config.getMinThresholdBytes()); // Output the image as PNG PNGOptimizer pngOptimizer = new PNGOptimizer(pngConfig, response); pngOptimizer.rewriteImpl(image); int pngLength = Integer.MAX_VALUE; if (pngOptimizer.getRewrittenImage() != null) { // PNG was better than original so use it minBytes = pngOptimizer.getRewrittenImage(); minLength = minBytes.length; pngLength = minLength; } // Write as standard JPEG using the configured default compression level write(image); // JPEG did not beat PNG if (pngLength == minLength) { usePng = true; } }
HttpResponse rewrite(HttpResponse original) throws IOException, ImageReadException { HttpResponseBuilder builder = new HttpResponseBuilder(original); new JPEGOptimizer(new OptimizerConfig(), builder).rewrite( JPEGOptimizer.readJpeg(original.getResponse())); return builder.create(); } }
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 readJpeg(HttpResponseBuilder response) throws ImageReadException, IOException { return JPEGOptimizer.readJpeg(response.getContentBytes()); } }
@Override protected void rewriteImpl(BufferedImage image) throws IOException { int pngLength = Integer.MAX_VALUE; if (config.isJpegConversionAllowed()) { // Create a new optimizer config and disable JPEG conversion OptimizerConfig pngConfig = new OptimizerConfig(config.getMaxInMemoryBytes(), config.getMaxPaletteSize(), false, config.getJpegCompression(), config.getMinThresholdBytes(), config.getJpegHuffmanOptimization(), config.getJpegRetainSubsampling()); // Output the image as PNG PNGOptimizer pngOptimizer = new PNGOptimizer(pngConfig, response); pngOptimizer.rewriteImpl(image); if (pngOptimizer.getRewrittenImage() != null) { // PNG was better than original so use it minBytes = pngOptimizer.getRewrittenImage(); minLength = minBytes.length; pngLength = minLength; } } // Write as standard JPEG using the configured default compression level write(image); // JPEG did not beat PNG if (pngLength == minLength) { usePng = true; } }
protected BufferedImage readJpeg(HttpResponseBuilder response) throws ImageReadException, IOException { return JPEGOptimizer.readJpeg(response.getContentBytes()); } }