Merge pull request #225 from Schmidor/tiff_ccitt_errortolerance

More tolerant CCITT reading
This commit is contained in:
Harald Kuhr 2016-04-21 13:04:08 +02:00
commit 2cec177c6d
3 changed files with 8 additions and 4 deletions

View File

@ -34,6 +34,7 @@ import java.io.EOFException;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
/**
* CCITT Modified Huffman RLE, Group 3 (T4) and Group 4 (T6) fax compression.
@ -403,14 +404,14 @@ final class CCITTFaxDecoderStream extends FilterInputStream {
@Override
public int read() throws IOException {
if (decodedLength < 0) {
return -1;
return 0xFF;
}
if (decodedPos >= decodedLength) {
fetch();
if (decodedLength < 0) {
return -1;
return 0xFF;
}
}
@ -420,14 +421,16 @@ final class CCITTFaxDecoderStream extends FilterInputStream {
@Override
public int read(byte[] b, int off, int len) throws IOException {
if (decodedLength < 0) {
return -1;
Arrays.fill(b, off, len, (byte)0xFF);
return len;
}
if (decodedPos >= decodedLength) {
fetch();
if (decodedLength < 0) {
return -1;
Arrays.fill(b, off, len, (byte)0xFF);
return len;
}
}

View File

@ -95,6 +95,7 @@ public class TIFFImageReaderTest extends ImageReaderAbstractTest<TIFFImageReader
new TestData(getClassLoaderResource("/tiff/ccitt/group3_2d_fill.tif"), new Dimension(6, 4)), // B/W, CCITT T4 2D
new TestData(getClassLoaderResource("/tiff/ccitt/group3_2d_lsb2msb.tif"), new Dimension(6, 4)), // B/W, CCITT T4 2D, LSB
new TestData(getClassLoaderResource("/tiff/ccitt/group4.tif"), new Dimension(6, 4)), // B/W, CCITT T6 1D
new TestData(getClassLoaderResource("/tiff/ccitt_tolessrows.tif"), new Dimension(6, 6)), // CCITT, metadata claiming 6 rows, stream contains only 4
new TestData(getClassLoaderResource("/tiff/fivepages-scan-causingerrors.tif"), new Dimension(2480, 3518)), // B/W, CCITT T4
// CIELab
new TestData(getClassLoaderResource("/tiff/ColorCheckerCalculator.tif"), new Dimension(798, 546)), // CIELab 8 bit/sample