public float getApproxQualityFactor() { if (approxQualityFactor < 0) { approxQualityFactor = (getLumaQualityFactor() + 2 * getChromaQualityFactor()) / 3.0F; } return approxQualityFactor; } }
@Override protected String getOutputContentType() { if (usePng) { return super.getOutputContentType(); } return "image/gif"; }
public float getLumaQualityFactor() { if (lumaQualityFactor < 0 && lumaIndex >= 0) { lumaQualityFactor = approximateQuality(tables[lumaIndex], k1LumaQuantTable); } return lumaQualityFactor; }
OptimizerConfig getDefaultConfigWithJpegConversionDisabled() { OptimizerConfig defaultConfig = new OptimizerConfig(); return new OptimizerConfig(defaultConfig.getMaxInMemoryBytes(), defaultConfig.getMaxPaletteSize(), false, defaultConfig.getJpegCompression(), defaultConfig.getMinThresholdBytes(), defaultConfig.getJpegHuffmanOptimization(), defaultConfig.getJpegRetainSubsampling()); }
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); } }
@Test public void testRetainSubsmaplingEnabled() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/testImage444.jpg", "image/jpeg"); HttpResponse rewritten = rewrite(resp, getConfigWithRetainSampling(true, 0.70f)); JpegImageUtils.JpegImageParams params = JpegImageUtils.getJpegImageData(rewritten.getResponse(), ""); assertTrue(rewritten.getContentLength() < resp.getContentLength()); assertEquals(JpegImageUtils.SamplingModes.YUV444, params.getSamplingMode()); }
HttpResponse rewrite(HttpResponse original) throws Exception { return rewrite(original, new OptimizerConfig()); }
private BufferedImage getResizedHttpResponseContent(String sourceContentType, String targetContentType, String imageName, Integer width, Integer height, Integer quality) throws Exception { return getResizedHttpResponseContent( sourceContentType, targetContentType, imageName, width, height, quality, false); }
public boolean visitSegment(int marker, byte markerBytes[], int markerLength, byte markerLengthBytes[], byte segmentData[]) throws ImageReadException, IOException { if (marker == END_OF_IMAGE_MARKER) return false; if ((marker == JpegConstants.SOF0Marker) || (marker == JpegConstants.SOF2Marker)) { parseSOFSegment(markerLength, segmentData); } else if (marker == HUFFMAN_TABLE_MARKER) { parseHuffmanTables(markerLength, segmentData); } else if (marker == QUANTIZATION_TABLE_MARKER) { parseQuantizationTables(markerLength, segmentData); } return true; }
OptimizerConfig getDefaultConfigWithJpegConversionDisabled() { OptimizerConfig defaultConfig = new OptimizerConfig(); return new OptimizerConfig(defaultConfig.getMaxInMemoryBytes(), defaultConfig.getMaxPaletteSize(), false, defaultConfig.getJpegCompression(), defaultConfig.getMinThresholdBytes(), defaultConfig.getJpegHuffmanOptimization(), defaultConfig.getJpegRetainSubsampling()); }
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); } }
@Test public void testRetainSubsmaplingEnabled() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/testImage444.jpg", "image/jpeg"); HttpResponse rewritten = rewrite(resp, getConfigWithRetainSampling(true, 0.70f)); JpegImageUtils.JpegImageParams params = JpegImageUtils.getJpegImageData(rewritten.getResponse(), ""); assertTrue(rewritten.getContentLength() < resp.getContentLength()); assertEquals(JpegImageUtils.SamplingModes.YUV444, params.getSamplingMode()); }
HttpResponse rewrite(HttpResponse original) throws Exception { return rewrite(original, new OptimizerConfig()); }
private BufferedImage getResizedHttpResponseContent(String sourceContentType, String targetContentType, String imageName, Integer width, Integer height, Integer quality) throws Exception { return getResizedHttpResponseContent( sourceContentType, targetContentType, imageName, width, height, quality, false); }
@Override protected String getOutputContentType() { if (usePng) { return super.getOutputContentType(); } return "image/gif"; }
public float getChromaQualityFactor() { if (chromaQualityFactor < 0 && chromaIndex >= 0) { chromaQualityFactor = approximateQuality(tables[chromaIndex], k2ChromaQuantTable); } return chromaQualityFactor; }
@Test public void testRetainSubsmaplingDisabled() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/testImage444.jpg", "image/jpeg"); HttpResponse rewritten = rewrite(resp, getConfigWithRetainSampling(false, 0.70f)); JpegImageUtils.JpegImageParams params = JpegImageUtils.getJpegImageData(rewritten.getResponse(), ""); assertTrue(rewritten.getContentLength() < resp.getContentLength()); assertEquals(JpegImageUtils.SamplingModes.YUV420, params.getSamplingMode()); }
private BufferedImage getResizedHttpResponseContent(String sourceContentType, String targetContentType, String imageName, Integer width, Integer height, Integer quality) throws Exception { return getResizedHttpResponseContent( sourceContentType, targetContentType, imageName, width, height, quality, false); }
@Override protected String getOutputContentType() { if (usePng) { return super.getOutputContentType(); } return "image/gif"; }
@Test public void testRetainSubsmaplingDisabled() throws Exception { HttpResponse resp = createResponse("org/apache/shindig/gadgets/rewrite/image/testImage444.jpg", "image/jpeg"); HttpResponse rewritten = rewrite(resp, getConfigWithRetainSampling(false, 0.70f)); JpegImageUtils.JpegImageParams params = JpegImageUtils.getJpegImageData(rewritten.getResponse(), ""); assertTrue(rewritten.getContentLength() < resp.getContentLength()); assertEquals(JpegImageUtils.SamplingModes.YUV420, params.getSamplingMode()); }