2006.10.14 12:59 "[Tiff] SamplesPerPixel is 0 when loading image", by Marcel Wiesweg

2006.10.15 15:18 "Re: [Tiff] SamplesPerPixel is 0 when loading image", by Gilles Caulier

Le Samedi 14 Octobre 2006 19:52, Joris a écrit:

Thank you for the error report.

for the application digiKam (www.digikam.org) we are using libtiff in our image loader. A while ago we received a bug report from a user that opening certain 16-bit TIFF images failed. The report was later on confirmed by another user.

Strangely, on other systems (on most systems, including mine) the test image loads without any problems.

As we all know, that is the hardest type of problem to debug. It's not even guaranteed that the problem is in LibTiff, it may be totally unrelated, as in a double free or out of bound memory access or race condition anywhere in unrelated code in the same process.

Do you have any idea what might be the difference between the machines where it worked, and the ones where it didn't? Did you spot any pattern?

Hi, I'm Gilles Caulier. I'm working with Marcel on digiKam project.

Here under Mandriva 2005/6/7 and suse 10.1, using libtiff 3.6.1 or 3.8.2, all work fine under digikam to display this image.

The problem have been reported under Slackware box. And the most strange is than where digikam fail, Imagemagick tiff loader work fine.

This point is very important. To have checked the ImageMagick tiff loader, the implemenations are similar.

We investigated that the problem is that after calling

    TIFFGetFieldDefaulted(tif, TIFFTAG_SAMPLESPERPIXEL, &samples_per_pixel);

the value of samples_per_pixel is "0" on the affected machines, "3" on all others. This has been tested with different versions of libtiff.

The full story can be found here: http://bugs.kde.org/show_bug.cgi?id=125916

The test image is http://amigos.amiga.hu/dudeeg/digikam_tiff/IMG_4224-01.tif

The source of out TIFF loader can be found at

> http://websvn.kde.org/trunk/extragear/graphics/digikam/libs/dimg/loaders/ti >ffloader.cpp?view=auto

Have you any idea what to do about this?

The image seems perfectly fine to me. So does the loader code, more or less. (Though I have some unrelated remarks, like a fourth channel in RGB images isn't always an alpha channel, nor the other way around, you'd have to check the ExtraSamples tag. Also, from the looks of it, I think you'll get into trouble with a 16 bits per channel RGB images with multiple extra samples.)

What version of LibTiff did you test? Have different versions been tested on the machines that gave a samples_per_pixel value of 0 in particular?

Under Slackware, 3.7.3 and 3.8.2 have been tested. Both failed.

Gilles Caulier