uDocumentViewer
Изображения.xcf

XCF (GIMP) просмотрщик

готово
О формате XCF (GIMP)

Нативный layered-формат GIMP — структурное превью с деревом слоёв.

XCF — нативный, полностью слоистый формат редактирования GIMP: маски, каналы, пути, parasites, плюс произвольная точность (8-bit integer через 32-bit float). Браузерного рендерера сегодня нет (пакет xcf-js, упоминаемый в туториалах, никогда не появился в npm; портирование полного компоситора GIMP вне scope), но спецификация формата XCF опубликована, так что мы можем парсить заголовок сами. Мы извлекаем версию GIMP, написавшую файл, размеры canvas, базовый тип (RGB/grayscale/indexed), точность, каждый layer pointer и первые ~24 имени и размера слоя, обходя строку имени каждого блока слоя.

Частые вопросы
Почему показано дерево слоёв, но не сам композит?
Отрисовка XCF-композита требует запуска полного layer-compositing engine GIMP: blend modes, layer masks, group layers, dithering для indexed-базового типа и декодирования per-tile RLE-формата, используемого для хранения пиксельных данных. Это сотни тысяч строк C-кода в самом GIMP. Мы парсим заголовок и индекс слоёв на чистом TypeScript, чтобы вы могли верифицировать содержимое, но для самих пикселей нужны GIMP, Krita (которая может открыть XCF для просмотра) или серверная конвертация через ImageMagick.
Какие версии XCF поддерживаются инспектором?
Мы читаем тег версии из 5 байт после magic — "file" для оригинального XCF1 (до 2008 года, GIMP 2.4), затем "v001"/"v002"/… для новых ревизий. v004 добавила слово precision для поддержки high-bit-depth. Наш парсер обрабатывает все версии до v013 (текущий GIMP 2.10/3.0); обход layer-pointer работает одинаково между версиями.
Как получить обычное изображение из XCF-файла?
Сам GIMP: File → Export As → PNG/JPEG/TIFF. Командная строка: gimp --batch '(let* ((image (car (gimp-file-load RUN-NONINTERACTIVE "in.xcf" "in.xcf")))) (file-png-save RUN-NONINTERACTIVE image (car (gimp-image-flatten image)) "out.png" "out" 0 9 1 1 1 1 1))' -b '(gimp-quit 0)'. Krita также может открыть XCF напрямую. ImageMagick прочитает XCF, если собран с поддержкой GIMP.
Обрабатываете ли поля precision и base-type?
Да — инспектор декодирует слово base-type (0 = RGB, 1 = Grayscale, 2 = Indexed) и для файлов v004+ слово precision (8-bit linear / non-linear / perceptual, 16-bit integer или half-float, 32-bit float, 64-bit double). High-bit-depth XCF из GIMP 2.10+, использующие 32-bit float внутренне для композитинга, корректно идентифицируются.
Ещё в разделе «Изображения»