FastRawViewer 1.5: поддержка TIFF и PNG (technology preview)

Настоящим хочется известить общественность, что поддержка файлов TIFF/PNG в FastRawViewer – готова для показа изумленной публике.

Ссылки для скачивания

Пока вы читаете тот текст, который ниже, вы можете потихоньку и скачивать

Ссылки устарели, берите тут: https://blog.lexa.ru/2019/03/17/fastrawviewer_15_grid_overlay_zoom_in_limit.html

История изменений:

  • 1.5.0-1438: исправлена ошибки с показом Lab-файлов если настройка Raw processing space была установлена не в sRGB
  • 1.5.0-1441:
    • Исправлена ошибка (с возможным падением) при показе превьюшек файлов в том случае, когда размер файла (или встроенного в него превью) в точности равен размеру показываемой на экране превьюшке.
    • Исправлена ошибка с показом PNG-файлов, в которых объявлен альфа-канал, но libpng его не находит (не спрашивайте как это, сам пока не вполне понял).
    • Добавлены скрытые настройки (см. ниже раздел Дополнительные настройки) для поддержки странных TIFF-файлов от пленочных сканеров.
    • Добавлена поддержка для RGB/TIFF сжатых Adobe Deflate с Predictor=2 (так сохраняли какие-то старые версии фотошопа)
  • 1.5.0-1442: Детектор "TIFF/RAW" ошибочно напускался на все файлы, не только на *.TIF
  • 1.5.0-1443:
    • Улучшена обработка tiled TIFF: в этом формате поддерживаются RGB/Grayscale, 8/16 bit, integer, будем улучшать до полной поддержки.
    • Обнаружена и исправлена (очень давняя) недоделка: тег tiff:Orientation теперь читается из XMP-блоков, встроенных в JPEG-файлы (и пишется туда же, если это включить)
    • Исправлена ошибка при групповой установке XMP-параметров (поворот, рейтинг, метка): в некоторых случаях это действие было (ошибочно) запрещено.
    • Исправлена ошибка: на совсем некорректных TIFF-файлах программа могла падать.

Поддержка форматов файлов

  • PNG: 8/16bit, Grayscale, RGB, Palette.
    Корректной/полноценной поддержки прозрачности и/или альфа-канала нет, FRV - инструмент фотографа, а не дизайнера.
  • TIFF/BigTIFF:
    • RGB/RGBA: 8/16 bit integer, 16/32 floating point (нормализованные 0-1, впрочем никаких других FP увидеть пока не удалось)
    • Grayscale: 8/16 bit int. 16/32 floating point
    • LAB (CIELAB TIFF): 8/16 bit integer
    • И некоторые другие форматы (особо не тестировались): palette, инвертированные grayscale.
    • TIFF-файлы Photoshop с встроенными слоями: показывается сгенерированное фотошопом композитное превью (полноразмерное), информация о слоях игнорируется.
    • Поддержки CMYK нет и не планируется: для показа CMYK нужен полноценный color management, а это невозможно для нужной скорости показа.
    • Методы сжатия: стандартные TIFF (Uncompressed,RLE, LZW), Adobe Deflate, Deflate.
  • Цветовые данные: читаются и применяются как встроенные ICC/ICM-профили, так и теги Primaries/WhitePoint/Gamma (при отсутствии тега Gamma, считается что gamma = 2.2 для целочисленных файлов и 1.0 для floating point)
  • Метаданные EXIF
    • TIFF: извлекаются и показываются
    • BigTIFF/PNG: не извлекаются и не показываются, но планируем сделать до релиза.
  • Метаданные XMP
    Поскольку FastRawViewer пишет XMP-данные в sidecar-XMP файлы, а ни одна другая протестированная программа их не читает для TIFF/PNG (а писать в сами файлы мы не хотим из соображений безопасности), то было принято тяжелое, но неизбежное решение: поддержки XMP для TIFF/PNG нет, а именно:
    • У TIFF/PNG файлов нет рейтингов-меток (они не читаются, их нельзя назначить)
    • Повороты средствами FRV для TIFF/PNG файлов не поддерживаются, для TIFF читается тег Orientation, а у PNG и такого нет.
    • Соответствующие пункты меню/действия (XMP rating, XMP label, rotate) – недоступны для TIFF/PNG-файлов.

Настройки FastRawViewer, связанные с TIFF/PNG

Для новых пользователей: настройки доступны через

  • Mac: Menu – FastRawViewer – Preferences, или Command-,
  • Windows: Menu – File – Customize – Preferences, или Ctrl-P

Включение поддержки, режимы декодирования

Вкладка Preferences – RAW+JPEG переименована в Preferences – File formats, ее новый вид показан на картинке справа.

Добавились:

  • Галочки PNG files support, TIFF files support. Их включение автоматически добавляет *.PNG и *.TIF/*.TIFF в список воспринимаемых расширений.
  • В группе Non-RAW file decode priorities добавились строчки для Lone PNGs, Lone TIFFs с вариантами:
    • On file open – файл декодируется при попытке открытия
    • On prefetch – файл декодируется заранее.

Поддержка TIFF и PNG по умолчанию включена, режим On prefetch для этих файлов включен по умолчанию, если на компьютере больше 14GB памяти.

Для файлов с расширением TIF производится автоматическое определение TIFF или RAW (.TIF-файлы писали кэноновские «единички» первой версии).

Файлы TIF/PNG не объединяются в пару с JPG (даже если это RAW-файлы Canon 1D, но эти камеры и не умели снимать RAW+JPEG).

Производительность и лимиты

Поскольку TIFF/PNG файлы могут быть любого размера (и в байтах, и в пикселях), пришлось ввести ограничения.

На вкладке Preferences – Performance (справа) появился отдельный раздел File size limits в котором задаются предельные размеры (в мегапикселях)

  • Показываемых файлов (PNG files size limit, TIFF files size limit).
    Если у файла размер больше, то FRV откажется его показывать, увеличивайте лимит, если нужно.
  • Файлов, для которых генерируются превьюшки  (PNG/TIFF thumbnail generation limit).
    Если размер файла больше, то вместо превьюшки будет иконка «Dimensions too large»).

Кроме того, в группе Other performance settings появилась новая настройка Generate high-quality thumbnails. Если ее отключить, качество превьюшек будет хуже, но генерируются они заметно быстрее.

Thumbnail cache

Про долгоживущий кэш превьюшек я уже писал, но повторю еще раз.

Настройки кэша превьюшек показаны на картинке справа.

  • Группа Thumbnail/Metadata fetched – настраивается
    • Thumbnail prefetch depth: сколько превьюшек кроме тех, что уже показаны на экране будет строится заранее.
    • Thumbnail decoder thread count: в сколько потоков они будут строиться (на HDD-дисках советуем стандартную настройку уменьшать до 2-3, для SSD – ставить от количества ядер CPU до удвоенного количества ядер).
  • In-memory thumbnail/metadata cache
    • Thumbnail cache size – сколько превьюшек держать в памяти
    • Metadata cache size – метаданные (EXIF, XMP, итп) какого количества файлов держать в памяти.
  • Disk thumbnail cache – кэш превьюшек на диске (рекомендуем располагать его ТОЛЬКО на SSD-дисках)
    • Thumbnail database path – путь к папке, где будет файл кэша
    • Database size limit – лимит размера кэша превьюшек
    • Stored thumbnail size: либо текущий размер (тогда при изменении размера показываемых превьюшек кэш «устареет»), либо максимально возможный размер превьюшек (тогда кэш на диске будет больше).
    • Image compression: как именно сжимать сохраняемые превьюшки.
    • Save cached thumbnails if…: самое важное место: в дисковый кэш кладутся только такие превьюшки, на построение которых было потрачено много времени (соответственно, перестраивать их каждый раз – долго). Если вы хотите класть в дисковый кэш ВСЕ, уменьшите эту настройку до нуля.
    • Mark cached thumbnails with red dot: если включить эту настройку, вы увидите, что взято из кэша, а что – перестроено на лету.

Дополнительные (скрытые) настройки

Для поддержки всяких сканерных (от пленочных сканеров) TIFF-файлов были добавлены нижеописанные скрытые (т.е. они не ставятся через диалог Preferences) настройки.

На всякий случай напомню, что эти настройки ставятся через registry/defaults (Windows/Mac) (лучше - при закрытом FastRawViewer) и начинают действовать при перезапуске FRV.

AdditionalTIFFExts - дополнительный список расширений (кроме *.tif *.tiff), воспринимаемых как TIFF-файлы

Изменение настройки:

  • Windows: Скопируйте файл C:\Program Files\LibRaw\FastRawViewer\scripts\AdditionalTIFFextenstionSample.reg куда-нибудь в укромное место, отредактируйте по вкусу: список расширений можно задавать как *.EXT1 *.EXT2, можно как .EXT1 .EXT2, можно просто EXT1 EXT2, разделитель пробел.
    Далее жмякните по этому (отредактированному) файлу дабл-кликом, запустится RegistryEditor, импортирует вашу настройку.
  • Mac:  выполните в терминале команду:
    defaults write com.libraw-llc.FastRawViewer Prefs.AdditionalTIFFExts "*.fff *.yyy"
    Где *.fff .*yyy - те расширения, которые вы хотите считать TIFF-файлами

Если файлы *.fff указано считать TIFF-файлами, то

  1. Они не будут склеиваться в пару RAW+JPEG
  2. Они будут тестироваться "а не RAW ли это" при показе и/или генерации превьюшки, т.е. спокойно можно смешивать *.fff от Имаконовского сканера и *.fff от камеры Hasselblad H3D (или любой другой).
NonBayerTiffIsNotRaw

Суть проблемы: некоторые TIFF-файлы (например, монохромные со сканеров) одновременно являются и RAW-файлами в том смысле, что библиотека LibRaw считает их вполне подходящими и корректными RAW-файлами (и такие файлы делались, например, камерой Kodak DCS 760M - это обычные линейные TIFF-файлы)

Если включить настройку NonBayerTIFFIsNotRAW, то FastRawViewer перестанет считать RAW-файлами такие TIFF-файлы, в которых находятся "не байеровские" данные, а будет считать их TIFF-файлами.

Включение этой настройки не сломает поддержку Canon 1D/1Ds, но скорее всего сломает Kodak 760M и подобные монохромные камеры, порождавшие файлы *.tif

Установка/выключение: Скриптами NonBayerTIFFIsNotRAW/NonBayerTIFFIsMaybeRAW соответственно (см. руководство, раздел "Дополнительные настройки", там написано как пользоваться скриптами дополнительных настроек)

Полезные мелочи

Если вы хотите перестроить превьюшки для всей текущей папки, используйте Menu – File – Reload – Fetch thumbnails for current folder (Ctrl-Shift-F на Windows, Command-Shift-F на Mac).

Если у вас включен Disk thumbnail cache, то «Fetch thumbnails…» построит превьюшки для всех файлов в папке (и сохранит те из них, время генерации которых было больше чем «Save cached thumbnails if…»).

Если дисковый кэш выключен, то будет построено не больше превьюшек, чем 80% кэша в памяти (т.е. 400 из 500 для настроек по умолчанию).

Если вы хотите очистить дисковый кэш, используйте Menu – File – Reload – clear thumbnails cache.

Мы не рекомендуем использовать большие значения в Thumbnail prefetch depth для автоматического фонового построения всех превьюшек в папке за исключением случая «очень мощный компьютер с очень быстрым SSD-диском».  Лучше вызовите явную команду построения превьюшек (Fetch thumbnails for current folder) и дождитесь ее завершения.

При сохранении TIFF-файлов из Photoshop мы рекомендуем включать опцию Save Image Pyramid: для таких файлов превьюшки строятся многократно быстрее (т.к. не нужно читать полноразмер, в файле есть варианты в ¼, 1/16, 1/64… по разрешению).

Color Management

На Windows-системах, Color Management у FastRawViewer по умолчанию выключен: у очень большой части Windows-пользователей установлены совершенно негодные профили дисплея, если их использовать, то будет хуже. Чтобы Color Management включить, просто включите галочку Enable Color Management

На маках ситуация с профилями гораздо лучше – и там Color Management по умолчанию включен.

Выключенный Color Management эквивалентен настройкам «все в sRGB» (RAW processing space, Ccolor space for thumbnails, Color space for untagged files).

Настройки Color Management (см. справа) не изменились, ничего нового не добавилось, на TIFF/PNG файлы существующие настройки действуют следующим образом:

  • RGB и Grayscale:
    • при полноэкранном показе применяется встроенный профиль
    • превьюшки: показываются без индивидуального Color Management (иначе было бы слишком медленно), считается что все файлы – в одном цветовом пространстве, задаваемом настройкой Color space for thumbnails (и из него – конвертируется в экранное цветовое пространство одинаковым способом для всех файлов).
    • Превьюшки для floating point файлов – конвертируются из гаммы 1 в гамму 2.2
    • Если у файла нет профиля, используется ‘Color space for untagged files’
  • LAB:
    • При полноэкранном показе производится конверсия в RAW processing color space (и из него – в дисплейный профиль)
    • Для превьюшек – производится конверсия в Color space for thumbnails (и из него – в дисплейный профиль).
      Внимание: превьюшки LAB-tiff пишутся в кэш превьюшек уже в RGB-формате. Если вы меняете color space for thumbnails, то старые превьюшки будут показываться неверно, мы рекомендуем использовать Menu - File - Reload - Clear thumbnails cache (увы, но убрать из кэша только превью Lab-файлов сейчас нельзя).
    • Конверсия LAB – RGB производится с absolute colormetric intent т.е. сжатия охвата нет, загамутные цвета – оказываются на краю рабочего цветового пространства (в реальности применяется конверсия Lab – xyz и затем конверсия xyz – RGB матричным профилем с обрезкой результатов, выходящих за диапазон 0-1).

Прочие (мелкие) изменения

  • Добавлена поддержка ICC-профилей для монохромных JPEG файлов (для PNG и TIFF – тоже, конечно).
  • JPEG-кэш теперь не так агрессивно пре-фетчит файлы
  • Уменьшен объем памяти, используемой JPEG cache
  • Shortcuts: добавлена вкладка ‘Folders handling’ и на нее перенесены операции с папками.

Планы

Хочется заранее предупредить: мы делаем вьюер для фотографов, поэтому поддерживаем те форматы, которые встречаются в практике фотографов. Нельзя исключить, что мы добавим поддержку PSD/PSB-файлов, есть некоторое желание добавить HEIC.

Но вот что мы точно не будем делать, так это поддержку GIF, BMP (Targa, SVG, WebP, JP2 и прочих 700+ графических форматов): есть программы которые умеют именно миллион форматов (не вдаваясь в их особенности и детали), пользуйтесь ими.

Comments

С Lab есть какая-то хрень, Color Management непоследовательно работает. Попытаюсь найти логику и вышлю на мыло.

Да, было бы хорошо.
Потому что с LAB, по идее, все вообще прозрачно абсолютно
- конвертируем в наш внутренний RGB (в тот же что и RAW)
- ну и показываем "так же как RAW"

Ага, вижу, если raw processing space ставить prophoto, то слишком насыщенное все. Пошел разбираться я.

UPD: и возвращается в норму после перестарта FRV. То есть что: при смене настроек это не доходит до Lab engine, получается такЪ

Да, где-то так, но я всё же напишу, что я вижу, возможно, там что-то ещё.

Да, история там оказалась сложнее
1) в читалку TIFF "не prefetch" - параметры lab-конверсии не доставлялись (и там всегда был sRGB на выходе, а дальше он мог восприниматься как что-то еще). И при старте не доставлялись, и при смене настроек.
2) Если вы меняете настройку на ходу, то в эту читалку опять ничего не доставлялось, а в префетчилку - все ок.
3) Но если файл который вы смотрите следуюшим - уже prefetched и настройка "Flush decoded caches on folder refresh" выключена - то в префетченом виде они то лежат уже в RGB декодированные.

Ща все докуем.

Залечено в 1.5.0-1438:
- полноэкранный режим полностью поправлен
- превьюшки поправить дешево нельзя т.е. при смене color space for thumbnails - рекомендуется вручную почистить базу превьюшек.

Есть, подтверждаю.

(уважытельно) вы всё-таки монстры, ды.

much kudos.

Мы просто делаем для себя.

Я LAB TIFF не хотел делать - а потом выяснил, что у меня в архиве тысячи таких файлов

да и вроде ж RPP может выдавать наружу такие tiff'ы

Z / V

Вот оттуда они и были.