Если не Adobe то кот?

Базовый Gray/RGB TIFF сковал, полез смотреть всякую экзотику, начал, для начала, с grayscale.

ImageMagick в зубы и в таком вот духе:

for bit in 8 9 12 14 16 17 24 29 32; do convert AZ1I2270_gray.tif -depth $bit -define tiff:endian=msb -define quantum:format=signed -define quantum:polarity=min-is-white AZ1I2270_gray${bit}sint_msb_inv.tif ; done

Ну и смотреть, адобом и IrfanView, до других уж извините руки не доходят. Выглядит местами смешно (кликабельно):

Что значит могу сказать из интересного:

  1. Сначала мне показалось, что IrfanView поддерживает ВСЕ. Но нет, почудилось: он если не может декодировать картинку, то метаданные (имя файла и битность в моем случае) меняет, а картинку оставляет ту же самую на экране.
    СЮРПРИЗ (нецензурно).
  2. Signed/unsigned, Intel/Motorola - не влияет, файл или показывается всеми вариантами одинаково, или нет (хотя вот что такое 29 bit signed - я несколько затрудняюсь сказать).
  3. TIFFTAG_PHOTOMETRIC=0 (MinIsWhite)
    1. НЕ ПОДДЕРЖИВАЕТ Adobe. Т.е. показывает негатив.
      Я, надо сказать, в шоке, потому что TIFF 6.0, вот самый что ни есть Baseline, пишет нам про данный тег в разделе про grayscale (и там стоит копирайт поглощенного Адобом Aldus).
    2. Не поддерживает libtiff:TIFFGetRGBAImage, тоже негатив (тут я задумался, нет ли спецификации новее, чем TIFF6, но вроде нету)
    3. У IrfanView все ОК..
  4. С битностями 8, 12, 16 бит - у обоих испытуемых все хорошо.
  5. С битностями 9 и 14 бит - у Adobe хорошо, у IrfanView - черный экран.
  6. Битности выше 16
    1.  Adobe (все битности: 17, 24, 29, 32): файлы декодируются, но показываются слишком светлыми, похоже на двойную гамма-коррекцию, один раз при чтении, второй раз - встроенным профилем.
    2. IrfanView:
      1. 17, 29 бит - черный экран
      2. 24 бита - все нормально
      3. 32 бита - похоже что принимает за floating point (хотя тега такого нет) и на экране ужас. В метаданных в нижней строчке пишет про 8bpp (что не так, потому что тогда бы развертка съехала)

И это я еще до плавучки не добрался.

P.S. Естественно, я выборочно проверил, что всякие странные варианты (типа 29 бит) обратно тем же ImageMagick/convert конвертируются обратно в 8 бит верно. Что, конечно, ничего не значит.

Comments

Кстати вот тут обещают:

http://www.libtiff.org/support.html

поддержку негатива, а произвольной битности - не обещают

Ну оно (libtiff) и 8 и 16 бит тоже нормально не.

так то да, TIFF*RGBA - произвольной битности не умеет.

Кстати, у libtiff удивительно, но работа идёт https://gitlab.com/libtiff/libtiff/commits/master

Ну таки да, они поддержали BigTIFF в версии 4, уже немало.