2014.12.23 15:42 "Re: [Tiff] TIFF JBIG writer and scanlines", by Yuriy M. Kaminskiy
Today I encountered this:
% tiffcp -r -1 -c jbig golfer-150-bilevel.tiff golfer-150-bilevel-jbig.tiff golfer-150-bilevel-jbig.tiff: ISO JBIG scanline encoding is not implemented.
golfer-150-bilevel-jbig.tiff: Error, can't write scanline 0.
This was due to a GraphicsMagick user reporting that scanline reading sometimes fails due to libtiff's JBIG support reporting that reading via scanlines is not supported. I used the tiffcp incantation he provided and encountered the same error as when GraphicsMagick tries to write via its scanline writer.
This is using jbigkit-2.0. I tried on a machine with jbigkit-1.6 and it worked.
Ideas?
Apparently, it fails when source has more than one strip.
Working:
Image Width: 1100 Image Length: 1600
Rows/Strip: 1600
Failing:
Image Width: 1100 Image Length: 1600
Rows/Strip: 256
Conversion in two steps works:
tiffcp -r -1 in.tiff temp.tiff # convert to single strip
tiffcp -c jbig temp.tiff out.tiff # compress to jbig
Relevant code from tiffcp.c:
case pack(PLANARCONFIG_CONTIG, PLANARCONFIG_CONTIG, F,F,F):
return bias? cpBiasedContig2Contig: cpContig2ContigByRow;
// ^^^ used when changing stripe size (and fails with jbig)
case pack(PLANARCONFIG_CONTIG, PLANARCONFIG_CONTIG, F,F,T):
return cpDecodedStrips;
// ^^^ used when recompressing same strip size (works with jbig)