Изображения.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 внутренне для композитинга, корректно идентифицируются.
Ещё в разделе «Изображения»
- .svgSVGScalable Vector Graphics.Открыть
- .pngPNGLossless растровое изображение.Открыть
- .jpgJPEGLossy фото-изображение.Открыть
- .gifGIFАнимированное/статичное растровое изображение.Открыть
- .webpWebPСовременное изображение Google lossy/lossless.Открыть
- .avifAVIFСовременный формат изображений на базе AV1.Открыть
- .bmpBMPНесжатый растр Windows.Открыть
- .icoICOMulti-resolution иконка Windows.Открыть