/** * @param requestedHeight the requested image height, assumed always nonnegative * @param requestedWidth the requested image width, assumed always nonnegative * @param imageInfo the image information to analyze * @return {@code true} if the image size given by the parameters is too large to be acceptable * for serving */ private boolean isTargetImageTooLarge(int requestedHeight, int requestedWidth, ImageInfo imageInfo) { long imagePixels = abs(requestedHeight) * abs(requestedWidth); long imageSizeBits = imagePixels * imageInfo.getBitsPerPixel(); return imageSizeBits > config.getMaxInMemoryBytes() * BITS_PER_BYTE; }
/** * @param requestedHeight the requested image height, assumed always nonnegative * @param requestedWidth the requested image width, assumed always nonnegative * @param imageInfo the image information to analyze * @return {@code true} if the image size given by the parameters is too large to be acceptable * for serving */ private boolean isTargetImageTooLarge(int requestedHeight, int requestedWidth, ImageInfo imageInfo) { long imagePixels = abs(requestedHeight) * abs(requestedWidth); long imageSizeBits = imagePixels * imageInfo.getBitsPerPixel(); return imageSizeBits > config.getMaxInMemoryBytes() * BITS_PER_BYTE; }
/** * @param requestedHeight the requested image height, assumed always nonnegative * @param requestedWidth the requested image width, assumed always nonnegative * @param imageInfo the image information to analyze * @return {@code true} if the image size given by the parameters is too large to be acceptable * for serving */ private boolean isTargetImageTooLarge(int requestedHeight, int requestedWidth, ImageInfo imageInfo) { long imagePixels = abs(requestedHeight) * abs(requestedWidth); long imageSizeBits = imagePixels * imageInfo.getBitsPerPixel(); return imageSizeBits > config.getMaxInMemoryBytes() * BITS_PER_BYTE; }
config.getMaxInMemoryBytes()); if (depalettized != null) { write(depalettized);
config.getMaxInMemoryBytes()); if (depalettized != null) { write(depalettized);
config.getMaxInMemoryBytes()); if (depalettized != null) { write(depalettized);
@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; } }
@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; } }
OptimizerConfig getConfigWithRetainSampling(boolean enabled, float quality) { OptimizerConfig defaultConfig = new OptimizerConfig(); return new OptimizerConfig(defaultConfig.getMaxInMemoryBytes(), defaultConfig.getMaxPaletteSize(), defaultConfig.isJpegConversionAllowed(), quality, defaultConfig.getMinThresholdBytes(), defaultConfig.getJpegHuffmanOptimization(), enabled); } }
OptimizerConfig getConfigWithRetainSampling(boolean enabled, float quality) { OptimizerConfig defaultConfig = new OptimizerConfig(); return new OptimizerConfig(defaultConfig.getMaxInMemoryBytes(), defaultConfig.getMaxPaletteSize(), defaultConfig.isJpegConversionAllowed(), quality, defaultConfig.getMinThresholdBytes(), defaultConfig.getJpegHuffmanOptimization(), enabled); } }
OptimizerConfig getDefaultConfigWithJpegConversionDisabled() { OptimizerConfig defaultConfig = new OptimizerConfig(); return new OptimizerConfig(defaultConfig.getMaxInMemoryBytes(), defaultConfig.getMaxPaletteSize(), false, defaultConfig.getJpegCompression(), defaultConfig.getMinThresholdBytes(), defaultConfig.getJpegHuffmanOptimization(), defaultConfig.getJpegRetainSubsampling()); }
OptimizerConfig getDefaultConfigWithJpegConversionDisabled() { OptimizerConfig defaultConfig = new OptimizerConfig(); return new OptimizerConfig(defaultConfig.getMaxInMemoryBytes(), defaultConfig.getMaxPaletteSize(), false, defaultConfig.getJpegCompression(), defaultConfig.getMinThresholdBytes(), defaultConfig.getJpegHuffmanOptimization(), defaultConfig.getJpegRetainSubsampling()); }
@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; } }