public BMPOptimizer(OptimizerConfig config, HttpResponseBuilder response) { super(config, response); ImageWriter writer = ImageIO.getImageWritersByFormatName("png").next(); outputter = new ImageIOOutputter(writer, null); }
public BMPOptimizer(OptimizerConfig config, HttpResponseBuilder response) { super(config, response); ImageWriter writer = ImageIO.getImageWritersByFormatName("png").next(); outputter = new ImageIOOutputter(writer, null); }
public BMPOptimizer(OptimizerConfig config, HttpResponseBuilder response) { super(config, response); ImageWriter writer = ImageIO.getImageWritersByFormatName("png").next(); outputter = new ImageIOOutputter(writer, null); }
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionQuality(config.getJpegCompression()); outputter = new ImageIOOutputter(writer, param); write(rgbOnlyImage);
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionQuality(config.getJpegCompression()); outputter = new ImageIOOutputter(writer, param); write(rgbOnlyImage);
protected ImageOutputter getOutputter() { Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName(getOriginalFormatName()); if (writers.hasNext()) { ImageWriter writer = writers.next(); ImageWriteParam param = writer.getDefaultWriteParam(); if (getOriginalFormatName().equals("jpeg")) { param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionQuality(config.getJpegCompression()); if (param instanceof JPEGImageWriteParam) { ((JPEGImageWriteParam) param).setOptimizeHuffmanTables( config.getJpegHuffmanOptimization()); } } JpegImageUtils.SamplingModes samplingMode = JpegImageUtils.SamplingModes.DEFAULT; if (config.getJpegRetainSubsampling() && sourceImageParams != null) { samplingMode = sourceImageParams.getSamplingMode(); } return new ImageIOOutputter(writer, param, samplingMode); } return new SanselanOutputter(FORMAT_NAME_TO_IMAGE_FORMAT.get(getOriginalFormatName())); }
/** * As the image is resized, the request needs to change so that the optimizer can * make sensible image size-related decisions down the pipeline. GIF images are rewritten * as PNGs though, so as not to include the dependency on the GIF decoder. * * @param response the base response that will be modified with the resized image * @param image the resized image that needs to be substituted for the original image from * the response */ private void updateResponse(HttpResponseBuilder response, BufferedImage image) throws IOException { ImageWriter imageWriter = ImageIO.getImageWritersByFormatName(RESIZE_OUTPUT_FORMAT).next(); ImageOutputter outputter = new ImageIOOutputter(imageWriter, null); byte[] imageBytes = outputter.toBytes(image); response .setResponse(imageBytes) .setHeader(CONTENT_TYPE, CONTENT_TYPE_IMAGE_PNG) .setHeader(CONTENT_LENGTH, String.valueOf(imageBytes.length)); }
/** * As the image is resized, the request needs to change so that the optimizer can * make sensible image size-related decisions down the pipeline. GIF images are rewritten * as PNGs though, so as not to include the dependency on the GIF decoder. * * @param response the base response that will be modified with the resized image * @param image the resized image that needs to be substituted for the original image from * the response */ private void updateResponse(HttpResponseBuilder response, BufferedImage image) throws IOException { ImageWriter imageWriter = ImageIO.getImageWritersByFormatName(RESIZE_OUTPUT_FORMAT).next(); ImageOutputter outputter = new ImageIOOutputter(imageWriter, null); byte[] imageBytes = outputter.toBytes(image); response .setResponse(imageBytes) .setHeader(CONTENT_TYPE, CONTENT_TYPE_IMAGE_PNG) .setHeader(CONTENT_LENGTH, String.valueOf(imageBytes.length)); }
/** * If the image is resized, the request needs to change so that the optimizer can * make sensible image size-related decisions down the pipeline. GIF images are rewritten * as PNGs though, so as not to include the dependency on the GIF decoder. * * @param response the base response that will be modified with the resized image * @param image the resized image that needs to be substituted for the original image from * the response */ public void updateResponse(HttpResponseBuilder response, BufferedImage image) throws IOException { ImageWriter imageWriter = ImageIO.getImageWritersByFormatName(RESIZE_OUTPUT_FORMAT).next(); ImageOutputter outputter = new ImageIOOutputter(imageWriter, null); byte[] imageBytes = outputter.toBytes(image); response .setResponse(imageBytes) .setHeader(CONTENT_TYPE, CONTENT_TYPE_IMAGE_PNG) .setHeader(CONTENT_LENGTH, String.valueOf(imageBytes.length)); }
@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); } }
@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 ImageOutputter getOutputter() { Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName(getOriginalFormatName()); if (writers.hasNext()) { ImageWriter writer = writers.next(); ImageWriteParam param = writer.getDefaultWriteParam(); if (getOriginalFormatName().equals("jpeg")) { param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionQuality(config.getJpegCompression()); } return new ImageIOOutputter(writer, param); } return new SanselanOutputter(FORMAT_NAME_TO_IMAGE_FORMAT.get(getOriginalFormatName())); }
@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 ImageOutputter getOutputter() { Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName(getOriginalFormatName()); if (writers.hasNext()) { ImageWriter writer = writers.next(); ImageWriteParam param = writer.getDefaultWriteParam(); if (getOriginalFormatName().equals("jpeg")) { param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionQuality(config.getJpegCompression()); } return new ImageIOOutputter(writer, param); } return new SanselanOutputter(FORMAT_NAME_TO_IMAGE_FORMAT.get(getOriginalFormatName())); }