mirror of
https://github.com/haraldk/TwelveMonkeys.git
synced 2025-08-04 03:55:28 -04:00
#358 Now passes compression quality on to the JPEGImageWriter delegate
This commit is contained in:
parent
910f9fafc7
commit
8a3b8c4c03
@ -359,7 +359,7 @@ public final class TIFFImageWriter extends ImageWriterBase {
|
|||||||
ListenerDelegate listener = new ListenerDelegate(imageIndex);
|
ListenerDelegate listener = new ListenerDelegate(imageIndex);
|
||||||
jpegWriter.addIIOWriteProgressListener(listener);
|
jpegWriter.addIIOWriteProgressListener(listener);
|
||||||
jpegWriter.addIIOWriteWarningListener(listener);
|
jpegWriter.addIIOWriteWarningListener(listener);
|
||||||
jpegWriter.write(renderedImage);
|
jpegWriter.write(null, image, copyParams(param, jpegWriter));
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
jpegWriter.dispose();
|
jpegWriter.dispose();
|
||||||
@ -394,6 +394,27 @@ public final class TIFFImageWriter extends ImageWriterBase {
|
|||||||
return nextIFDPointerOffset;
|
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
|
// TODO: Candidate util method
|
||||||
private int computePixelSize(final SampleModel sampleModel) {
|
private int computePixelSize(final SampleModel sampleModel) {
|
||||||
int size = 0;
|
int size = 0;
|
||||||
|
@ -322,10 +322,11 @@ public class TIFFImageWriterTest extends ImageWriterAbstractTestCase {
|
|||||||
new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB),
|
new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB),
|
||||||
new BufferedImage(110, 100, BufferedImage.TYPE_INT_RGB),
|
new BufferedImage(110, 100, BufferedImage.TYPE_INT_RGB),
|
||||||
new BufferedImage(120, 100, BufferedImage.TYPE_INT_RGB),
|
new BufferedImage(120, 100, BufferedImage.TYPE_INT_RGB),
|
||||||
new BufferedImage(130, 100, BufferedImage.TYPE_INT_RGB)
|
new BufferedImage(130, 100, BufferedImage.TYPE_INT_RGB),
|
||||||
|
new BufferedImage(140, 100, BufferedImage.TYPE_BYTE_BINARY)
|
||||||
};
|
};
|
||||||
|
|
||||||
Color[] colors = new Color[] {Color.RED, Color.GREEN, Color.BLUE, Color.ORANGE};
|
Color[] colors = new Color[] {Color.RED, Color.GREEN, Color.BLUE, Color.ORANGE, Color.WHITE};
|
||||||
|
|
||||||
for (int i = 0; i < images.length; i++) {
|
for (int i = 0; i < images.length; i++) {
|
||||||
BufferedImage image = images[i];
|
BufferedImage image = images[i];
|
||||||
@ -350,18 +351,21 @@ public class TIFFImageWriterTest extends ImageWriterAbstractTestCase {
|
|||||||
try {
|
try {
|
||||||
writer.prepareWriteSequence(null);
|
writer.prepareWriteSequence(null);
|
||||||
|
|
||||||
params.setCompressionType("JPEG");
|
params.setCompressionType("LZW");
|
||||||
writer.writeToSequence(new IIOImage(images[0], null, null), params);
|
writer.writeToSequence(new IIOImage(images[0], null, null), params);
|
||||||
|
|
||||||
params.setCompressionType("None");
|
params.setCompressionType("None");
|
||||||
writer.writeToSequence(new IIOImage(images[1], null, null), params);
|
writer.writeToSequence(new IIOImage(images[1], null, null), params);
|
||||||
|
|
||||||
params.setCompressionType("None");
|
params.setCompressionType("JPEG");
|
||||||
writer.writeToSequence(new IIOImage(images[2], null, null), params);
|
writer.writeToSequence(new IIOImage(images[2], null, null), params);
|
||||||
|
|
||||||
params.setCompressionType("PackBits");
|
params.setCompressionType("PackBits");
|
||||||
writer.writeToSequence(new IIOImage(images[3], null, null), params);
|
writer.writeToSequence(new IIOImage(images[3], null, null), params);
|
||||||
|
|
||||||
|
params.setCompressionType("CCITT T.6");
|
||||||
|
writer.writeToSequence(new IIOImage(images[4], null, null), params);
|
||||||
|
|
||||||
writer.endWriteSequence();
|
writer.endWriteSequence();
|
||||||
}
|
}
|
||||||
catch (IOException e) {
|
catch (IOException e) {
|
||||||
@ -430,6 +434,30 @@ public class TIFFImageWriterTest extends ImageWriterAbstractTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWriteParamJPEGQuality() throws IOException {
|
||||||
|
ImageWriter writer = createImageWriter();
|
||||||
|
|
||||||
|
try (ImageOutputStream output = ImageIO.createImageOutputStream(new NullOutputStream())) {
|
||||||
|
writer.setOutput(output);
|
||||||
|
|
||||||
|
try {
|
||||||
|
ImageWriteParam param = writer.getDefaultWriteParam();
|
||||||
|
// Make sure that the JPEG delegation outputs the correct indexes
|
||||||
|
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
|
||||||
|
param.setCompressionType("JPEG");
|
||||||
|
param.setCompressionQuality(.1f);
|
||||||
|
|
||||||
|
writer.write(null, new IIOImage(new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB), null, null), param);
|
||||||
|
|
||||||
|
// In a perfect world, we should verify that the parameter was passed to the JPEG delegate...
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
fail(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testReadWriteRead1BitLZW() throws IOException {
|
public void testReadWriteRead1BitLZW() throws IOException {
|
||||||
// Read original LZW compressed TIFF
|
// Read original LZW compressed TIFF
|
||||||
|
Loading…
x
Reference in New Issue
Block a user