Simplified write logic, by reusing sequence writing (single image sequence).

This commit is contained in:
Harald Kuhr 2018-06-13 16:53:43 +02:00
parent 90593117db
commit 156990afe0

View File

@ -132,16 +132,9 @@ public final class TIFFImageWriter extends ImageWriterBase {
@Override @Override
public void write(final IIOMetadata streamMetadata, final IIOImage image, final ImageWriteParam param) throws IOException { public void write(final IIOMetadata streamMetadata, final IIOImage image, final ImageWriteParam param) throws IOException {
assertOutput(); prepareWriteSequence(streamMetadata);
configureStreamByteOrder(streamMetadata, imageOutput); writeToSequence(image, param);
endWriteSequence();
// TODO: Make TIFFEntry and possibly TIFFDirectory? public
TIFFWriter tiffWriter = new TIFFWriter();
tiffWriter.writeTIFFHeader(imageOutput);
writePage(0, image, param, tiffWriter, imageOutput.getStreamPosition());
imageOutput.flush();
} }
private long writePage(int imageIndex, IIOImage image, ImageWriteParam param, TIFFWriter tiffWriter, long lastIFDPointerOffset) private long writePage(int imageIndex, IIOImage image, ImageWriteParam param, TIFFWriter tiffWriter, long lastIFDPointerOffset)
@ -927,7 +920,7 @@ public final class TIFFImageWriter extends ImageWriterBase {
} }
@Override @Override
public void prepareWriteSequence(IIOMetadata streamMetadata) throws IOException { public void prepareWriteSequence(final IIOMetadata streamMetadata) throws IOException {
if (writingSequence) { if (writingSequence) {
throw new IllegalStateException("sequence writing has already been started!"); throw new IllegalStateException("sequence writing has already been started!");
} }
@ -942,7 +935,7 @@ public final class TIFFImageWriter extends ImageWriterBase {
} }
@Override @Override
public void writeToSequence(IIOImage image, ImageWriteParam param) throws IOException { public void writeToSequence(final IIOImage image, final ImageWriteParam param) throws IOException {
if (!writingSequence) { if (!writingSequence) {
throw new IllegalStateException("prepareWriteSequence() must be called before writeToSequence()!"); throw new IllegalStateException("prepareWriteSequence() must be called before writeToSequence()!");
} }