Skip to content

Instantly share code, notes, and snippets.

@ESidenko
Created October 8, 2019 19:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ESidenko/7e927e66d3f218bae75da311c4a4ee0e to your computer and use it in GitHub Desktop.
Save ESidenko/7e927e66d3f218bae75da311c4a4ee0e to your computer and use it in GitHub Desktop.
Memory Strategy optimization
LoadOptions options = new LoadOptions();
options.setBufferSizeHint(50);
// Setting a memory limit of 50 megabytes for target loaded image
try (Image image = Image.load("inputFile.jpg", options))
{
JpegOptions jpegOptions = new JpegOptions();
jpegOptions.setCompressionType(JpegCompressionMode.Baseline);
jpegOptions.setQuality(100);
image.save("outputFile_Baseline.jpg", jpegOptions);
jpegOptions = new JpegOptions();
jpegOptions.setCompressionType(JpegCompressionMode.Progressive);
image.save("outputFile_Progressive.jpg", jpegOptions);
jpegOptions = new JpegOptions();
jpegOptions.setCompressionType(JpegCompressionMode.Lossless);
jpegOptions.setColorType(JpegCompressionColorMode.YCbCr);
jpegOptions.setBitsPerChannel((byte)4);
image.save("outputFile_Lossless.jpg", jpegOptions);
jpegOptions = new JpegOptions();
jpegOptions.setCompressionType(JpegCompressionMode.JpegLs);
jpegOptions.setColorType(JpegCompressionColorMode.YCbCr);
jpegOptions.setJpegLsInterleaveMode(JpegLsInterleaveMode.None);
jpegOptions.setJpegLsAllowedLossyError(3);
jpegOptions.setJpegLsPreset(null);
image.save("outputFile_JpegLs.jpg", jpegOptions);
}
// Setting a memory limit of 50 megabytes for target created image
try (JpegOptions createOptions = new JpegOptions())
{
createOptions.setCompressionType(JpegCompressionMode.Progressive);
createOptions.setBufferSizeHint(50);
createOptions.setSource(new FileCreateSource("createdFile.jpg", false));
try (Image image = Image.create(createOptions, 1000, 1000))
{
image.save(); // save to same location
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment