| AWARE [SYSTEMS] | Imaging expertise for the Delphi developer | |||||||
![]() |
TIFF and LibTiff Mailing List Archive | |||||||
LibTiff Mailing List
TIFF and LibTiff Mailing List Archive Contact
The TIFF Mailing List Homepage |
Thread2012.04.28 16:26 "Re: =?windows-1256?q?YCbCr/JPEG_issue_in_4=2E0=2E1=FE?=", by Charles AuerSORRY. I reversed compression = 6 and compression = 7 on the previous post. Joris: Well, back to the bug reading JPEG (compression = 7) compressed images using Libtiff 4.0, the problem is only evident if you read the subsampled YCbCr data directly, doing resampling and color conversion yourself. For example, subsampling = [ 2, 2 ] data should look like this: Y Y Y Y Cb Cr Y Y Y Y Cb Cr Y Y Y Y Cb CrY Y Y Y Cb Cr Y Y Y Y Cb Cr Y Y Y Y Cb Cr Y Y Y Y Cb Cr Y Y Y Y Cb Cr Y Y Y Y Cb Cr but instead you get this: Y Y Y Y Cb Cr Y Y Y Y Cb Cr Y Y Y Y Cb Cr 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0Y Y Y Y Cb Cr Y Y Y Y Cb Cr Y Y Y Y Cb Cr 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Y Y Y Y Cb Cr Y Y Y Y Cb Cr Y Y Y Y Cb Cr 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 You can still recover the image by ignoring the zeroes and the error message. As a matter of interest, Joris, OJPEG (compression = 6) data are read correctly. Rewriting tif_ojpeg.c was a tremendous contribution that you made to Libtiff, by the way. Also, I made a set of YCbCr test images with all possible subsampling values ( [ 1, 1 ], [ 1 , 2 ], [ 1, 4 ], [ 2, 1 ], [ 2, 2 ], [2, 4 ], [ 4, 1 ], [ 4, 2 ], and [ 4, 4 ] ), both uncompressed and LZW compressed, and all of these images are read correctly. The problem appears isolated to JPEG (compression = 7) compressed images. The easiest work-around right now to handle JPEG compressed images with Libtiff 4.0 is either: 1. Use TIFFReadRGBAImage 2. Use TIFFReadEncodedStrip or TIFFReadEncodedTile with JPEGCOLORMODE = 1 Of course, both of these methods output RGB colors. Charles |
|||||||