画像.xcf
XCF (GIMP) ビューア
XCF (GIMP)について
GIMP ネイティブレイヤー形式 — レイヤーツリー付き構造プレビュー。
XCF は GIMP のネイティブで完全にレイヤー化された編集形式です。マスク、チャンネル、パス、パラサイト、加えて任意の精度 (8 ビット整数から 32 ビット float まで) を持ちます。今日ブラウザサイドのレンダラは存在しません (チュートリアルで参照される 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 ビット整数または half-float、32 ビット float、64 ビット double) をデコードします。コンポジティングに 32 ビット float を内部使用する GIMP 2.10+ のハイビット深度 XCF は正しく識別されます。
他の画像