图片.xcf
XCF (GIMP) 查看器
关于 XCF (GIMP)
GIMP 原生分层格式——带图层树的结构预览。
XCF 是 GIMP 原生的、完全分层的编辑格式——蒙版、通道、路径、parasites,以及任意精度(8 位整数到 32 位浮点)。目前没有浏览器端渲染器(教程中提到的 xcf-js 包从未发布到 npm;移植 GIMP 完整的合成器超出范围),但 XCF 文件格式规范已公开,所以我们可以自己解析头部。我们提取写入文件的 GIMP 版本、画布尺寸、基本类型(RGB/灰度/索引)、精度、每个图层指针,以及通过遍历每个图层块的名称字符串得到的前约 24 个图层名称和大小。
常见问题
- 为什么显示图层树但不显示实际合成?
- 渲染 XCF 合成需要运行 GIMP 完整的图层合成引擎:混合模式、图层蒙版、组图层、对索引基本类型的抖动,以及解码用于存储像素数据的每瓦片 RLE 格式。这是 GIMP 自身中数十万行 C 代码。我们在纯 TypeScript 中解析头部和图层索引,以便你验证内容,但要获得实际像素你需要 GIMP、Krita(可打开 XCF 查看)或服务端 ImageMagick 转换。
- 检查器支持哪些 XCF 版本?
- 我们从魔术字后的 5 字节读取版本标记——原始 XCF1(2008 前 GIMP 2.4)为 "file",较新的修订为 "v001"/"v002"/…。v004 添加了精度字以支持高位深。我们的解析器处理直至 v013(当前 GIMP 2.10/3.0)的所有版本;图层指针遍历在各版本之间相同。
- 如何从 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 编译时启用了 GIMP 支持,就能读取 XCF。
- 你们处理精度和基本类型字段吗?
- 处理——检查器解码基本类型字(0 = RGB,1 = Grayscale,2 = Indexed),并且对 v004+ 文件,解码精度字(8 位线性/非线性/感知,16 位整数或半浮点,32 位浮点,64 位双精度)。来自 GIMP 2.10+ 内部使用 32 位浮点合成的高位深 XCF 能被正确识别。
更多图片