#358 Now passes compression quality on to the JPEGImageWriter delegate

This commit is contained in:
Harald Kuhr
2017-12-19 20:34:02 +01:00
parent 910f9fafc7
commit 8a3b8c4c03
2 changed files with 54 additions and 5 deletions
@@ -359,7 +359,7 @@ public final class TIFFImageWriter extends ImageWriterBase {
ListenerDelegate listener = new ListenerDelegate(imageIndex);
jpegWriter.addIIOWriteProgressListener(listener);
jpegWriter.addIIOWriteWarningListener(listener);
jpegWriter.write(renderedImage);
jpegWriter.write(null, image, copyParams(param, jpegWriter));
}
finally {
jpegWriter.dispose();
@@ -394,6 +394,27 @@ public final class TIFFImageWriter extends ImageWriterBase {
return nextIFDPointerOffset;
}
// TODO: Candidate util method
private ImageWriteParam copyParams(final ImageWriteParam param, final ImageWriter writer) {
if (param == null) {
return null;
}
// Always safe
ImageWriteParam writeParam = writer.getDefaultWriteParam();
writeParam.setSourceSubsampling(param.getSourceXSubsampling(), param.getSourceYSubsampling(), param.getSubsamplingXOffset(), param.getSubsamplingYOffset());
writeParam.setSourceRegion(param.getSourceRegion());
writeParam.setSourceBands(param.getSourceBands());
// Only if canWriteCompressed()
writeParam.setCompressionMode(param.getCompressionMode());
if (param.getCompressionMode() == ImageWriteParam.MODE_EXPLICIT) {
writeParam.setCompressionQuality(param.getCompressionQuality());
}
return writeParam;
}
// TODO: Candidate util method
private int computePixelSize(final SampleModel sampleModel) {
int size = 0;