From 1923ff022201b2bd86e66d5c6f7562ba5b899f3b Mon Sep 17 00:00:00 2001 From: James Zern Date: Wed, 26 Apr 2017 22:49:11 -0700 Subject: [PATCH] tiffdec: fix EXTRASAMPLES check the TIFFGetField() return for TIFFTAG_EXTRASAMPLES is defined as (count, types array) [1]. previously the count was being checked rather than the first element of the array to determine whether the alpha was associated (pre-multiplied) and the result needed to be unmultiplied. since: 9273e441 fix TIFF encoder regarding rgbA/RGBA [1] http://www.libtiff.org/man/TIFFSetField.3t.html Change-Id: I6e41be9d038fe8afb6d0aa3c8048925dc901113b --- imageio/tiffdec.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/imageio/tiffdec.c b/imageio/tiffdec.c index d363d7ca..1264391b 100644 --- a/imageio/tiffdec.c +++ b/imageio/tiffdec.c @@ -215,7 +215,8 @@ int ReadTIFF(const uint8_t* const data, size_t data_size, TIFFSwabArrayOfLong(raster, width * height); #endif // if we have an alpha channel, we must un-multiply from rgbA to RGBA - if (samples_per_px > 3 && extra_samples == 1) { + if (extra_samples == 1 && extra_samples_ptr != NULL && + extra_samples_ptr[0] == EXTRASAMPLE_ASSOCALPHA) { uint32_t y; uint8_t* tmp = (uint8_t*)raster; for (y = 0; y < height; ++y) {