mirror of
https://github.com/haraldk/TwelveMonkeys.git
synced 2025-08-04 12:05:29 -04:00
findCompressionType always uses RLE if leading EOL is missing (#657)
Update of the last read byte is missing since the last update. So if only the first EOL is missing, further EOLs after the lines are not detected.
This commit is contained in:
parent
7e0d8922da
commit
ac8a36db1c
@ -170,6 +170,7 @@ final class CCITTFaxDecoderStream extends FilterInputStream {
|
||||
// no EOL before stream end
|
||||
return TIFFBaseline.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE;
|
||||
}
|
||||
streamByte = (byte) read;
|
||||
}
|
||||
|
||||
b = (short) ((b << 1) + ((streamByte >> (7 - (i % 8))) & 0x01));
|
||||
|
@ -363,6 +363,20 @@ public class CCITTFaxDecoderStreamTest {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindCompressionTypeForMissingStartEOL() throws IOException {
|
||||
// Type 4, missing leading EOL code
|
||||
// starts with 1728px long white lines
|
||||
byte[] data = new byte[]{
|
||||
0x4d, (byte) 0x9a, (byte) 0x80, 0x01, 0x4d, (byte) 0x9a, (byte) 0x80, 0x01, 0x4d, (byte) 0x9a, (byte) 0x80, 0x01, 0x4d, (byte) 0x9a, (byte) 0x80, 0x01,
|
||||
(byte) 0x91, 0x3c, 0x17, 0x6d, 0x02, (byte) 0xf2, (byte) 0xb0, 0x20, (byte) 0x01, (byte) 0xda, (byte) 0xa8, (byte) 0xb3, 0x17, 0x4e, 0x62, (byte) 0xcd, (byte) 0xa7
|
||||
};
|
||||
try (ByteArrayInputStream is = new ByteArrayInputStream(data)) {
|
||||
int detectedType = CCITTFaxDecoderStream.findCompressionType(TIFFExtension.COMPRESSION_CCITT_T4, is);
|
||||
assertEquals(TIFFExtension.COMPRESSION_CCITT_T4, detectedType);
|
||||
}
|
||||
}
|
||||
|
||||
private InputStream getResourceAsStream(String name) {
|
||||
return getClass().getResourceAsStream(name);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user