corrected IFD & strip width calculations for sequence writer

This commit is contained in:
Oliver Schmidtmer
2016-01-20 00:22:46 +01:00
parent fc80ac2ee9
commit e145de01f3
2 changed files with 43 additions and 26 deletions
@@ -43,12 +43,10 @@ import javax.imageio.metadata.IIOMetadataFormatImpl;
import javax.imageio.metadata.IIOMetadataNode;
import javax.imageio.stream.ImageInputStream;
import javax.imageio.stream.ImageOutputStream;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.*;
import java.util.Arrays;
import java.util.List;
@@ -285,7 +283,25 @@ public class TIFFImageWriterTest extends ImageWriterAbstractTestCase {
ImageOutputStream stream = ImageIO.createImageOutputStream(buffer);
writer.setOutput(stream);
RenderedImage image = getTestData(0);
Graphics2D g2d = null;
BufferedImage image[] = new BufferedImage[] {
new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB),
new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB),
new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB)
};
g2d = image[0].createGraphics();
g2d.setColor(Color.red);
g2d.fillRect(0,0,100,100);
g2d.dispose();
g2d = image[1].createGraphics();
g2d.setColor(Color.green);
g2d.fillRect(0,0,100,100);
g2d.dispose();
g2d = image[2].createGraphics();
g2d.setColor(Color.blue);
g2d.fillRect(0,0,100,100);
g2d.dispose();
ImageWriteParam params = writer.getDefaultWriteParam();
params.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
@@ -295,12 +311,13 @@ public class TIFFImageWriterTest extends ImageWriterAbstractTestCase {
try {
writer.prepareWriteSequence(null);
params.setCompressionType("None");
writer.writeToSequence(new IIOImage(image, null, null), params);
writer.writeToSequence(new IIOImage(image, null, null), params);
params.setCompressionType("JPEG");
writer.writeToSequence(new IIOImage(image, null, null), params);
writer.writeToSequence(new IIOImage(image[0], null, null), params);
params.setCompressionType("None");
writer.writeToSequence(new IIOImage(image[1], null, null), params);
params.setCompressionType("JPEG");
writer.writeToSequence(new IIOImage(image[2], null, null), params);
g2d.dispose();
writer.endWriteSequence();
}
catch (IOException e) {
@@ -314,5 +331,8 @@ public class TIFFImageWriterTest extends ImageWriterAbstractTestCase {
ImageReader reader = ImageIO.getImageReaders(input).next();
reader.setInput(input);
assertEquals("wrong image count", 3, reader.getNumImages(true));
for(int i = 0; i < reader.getNumImages(true); i++){
reader.read(i);
}
}
}