2018年5月16日水曜日

GIMP .xcf ファイルの事

GIMP には 長い長い 歴史があります。
そして、遂に、公開された GIMP 2.10 Stable !。
ファイル .xcf にも 種類 があります。
その辺りを、利用者側の視線から、少し、書いて見ましょうか。


同じファイル拡張子 .xcf ですが、
何種類か が存在しています。

  圧縮アルゴリズムの違いによる .xcf / .xcf.gz (.xcfgz) / .xcf.bz2 (.xcfbz2) とは別にです。

きっと、直前の安定版(正式版)であった GIMP 2.8.22 をお使いの方も、
ご自分で作成されたファイル .xcf に幾つかのタイプがある筈です。
普段は、全く、そんな事を気にせずに作業しているとは思いますが ... 。

ご存知の様に、 GIMP には 安定版 と 開発版 とがあります。
GIMP 2.x の x が奇数なら開発版、偶数なら安定版ですね。
2.10 も、 2.9 が版を重ねる事で 完成し、安定版としてリリースされましたが、
それは随分と長い期間を要しました。

実は、 その苦難の道を示す とも思われる 痕跡 が .xcf ファイルに刻まれています。

.xcf ファイル と GIMP は 下位互換 で設計され、 新しい機能を盛り込んだ GIMP で、
昔のファイルが使える様になっています。

新しい機能を実現するには、新しい仕組みが必要で、データ保存を担うファイル構造も変化します。
ファイルの中には、その構造の変化を示す値が入っています。
ファイルバージョンです。

Windows の場合、Explorer から Propaty を幾ら覗いても、このファイルバージョンは示されません。
でも、 所謂、ファイルのマジックナンバーと同様に、
.xcf 冒頭部分に記録されたファイルバージョンを GIMP が読み取る事で、正常な動作を支援しています。

GIMP 2.10.0 で作成された .xcf ファイルのバージョンは 11 等です。
これに対して、
GIMP 2.8.22 でグループを持つものは 3 です。
同じく、.22 でグループを持たないケースでは 0 が多いです。
他に、1 も 2 もあります。
0 から始まった GIMP .xcf ファイルの歴史は GIMP 2.8 の 3 から GIMP 2.10 の 11 等に飛び上がった訳です。

GIMP 2.8 の特徴が グループ の存在だとすれば、 2.10 は色深度の高精細さ。
これを実現する為に、(いえ、正確には、内部ライブラリ更新の為?)、
随分と試行錯誤が繰り返された事が窺えるのです。
それ故、 随分と、待つ事になった と言い換えても良いかも知れません。
実際、検索して見れば分かりますが、GIMP 2.9 で .xcf version 8 と言う時代もあった様です。
恐らく、全ての数字が抜ける事無く存在している気がします。
開発版で作ったファイルがその後の版で開けないのでは不都合が生じますからね。

前に書いた その苦難の道を示す とも思われる 痕跡 が 3 から 11 13 への 数字のジャンプ です!。


さて、
この .xcf ファイルのバージョン等は ファイル冒頭の マジックナンバーに続いて記録されています。

  GIMP のバージョンに固有の .xcf ファイルバージョンがある訳では無く、
  GIMP 2.8 で顕著な様に、
  画像が使っているソフトの機能に応じて ファイル形式が選定されて 保存されています。
  言い換えれば、
  古いファイルでも、GIMP 2.10 で編集すれば、必ず、.xcf 11 等になるとは限らないのですね。
  新規の場合は、概ね、GIMP 2.10 = .xcf 11 等になる様ですが。

そこで、 プログラムを書いて見ました。
ファイル先端部分を読み込み、
.xcf のマジックナンバー gimp xcf 、
.xcf のバージョン file / v001 / v002 / v003 / ... / v011 / ... / v013    ( file = v000 ).
を一覧形式で表示するものです。

続いて、 v003 未満 = GIMP 2.6 / v003 以下 = GIMP 2.8 / v011 v013 以下 = GIMP 2.10 として、
適否の欄を設けています。

尚、 IsXcf 欄は マジックナンバーとバージョン直後の 0x00 のみを見て判断しています。



既に、 その先の v012 - v013 も存在する様ですが ... ?。
将来への布石でしょうか。  ... GIMP 3 ? 、 GIMP 4 ?

GIMP 2.10 公開直後の今は、きっと、その文字に直面するケースは無い筈です。  普通では。
GitHub にて、 v013 迄 GIMP 2.10.0 でサポートとの記述を見付けました。 *1.



[2018/05/19] v013 迄 GIMP 2.10.0 がサポートの件を追記 内容もこれに沿って訂正 *1.

0 件のコメント:

コメントを投稿