SSブログ
RSS [RSS1.0] [RSS2.0]
共謀罪を含む改悪組織犯罪処罰法は
【「共謀罪」法 衆参両院議員の投票行動(東京新聞 2017/6/16)】

GIMPで加工する透過GIFではカラーマップに注意

 【GIMPとPhotoFiltreの透過GIFで頭が混乱】で「青地に赤」の画像の青地の部分を透明化した透過GIF(20091110-GIMP1.gif)を保存した後に再びGIMPで開いてアルファチャンネルを削除すると青地の部分が復活せずに真っ赤になってしまうトラブルを書いたら、コメント欄でhiyokoさんが次のように教えてくれた。

GIMPについてチョット

(中略)

2番目の「透明な地に赤のGIF画像」
インデックスカラーで、カラー情報は赤のみです。
ウィンドウ>ドッキング可能なダイアログ>カラーマップ
で確認できます。
チャンネルはインデックスと透明な部分がある為アルファチャンネルが表示されています。

インデックスカラーの状態でアルファチャンネルを削除すると
透明な部分はカラー情報が赤1色しかないので赤で塗り潰されます。

RGBに変更してアルファチャンネルを削除すると
透明な部分はツールボックスの背景色に設定している色に変更されます。
青に設定していれば当然青に変わります。
これはGIMPの仕様です。

by hiyoko (2009-11-11 03:23) [id:c31999937]

 指摘されたように【20091110-GIMP1.gif】のカラーマップを確認してみた。

20091110-GIMP1.gifのカラーマップ

 確かに「赤」しか存在せず、透明化されている「青」はマップにない。
 しかし、【20091110-GIMP1.gif】から背景色の情報が削除されてしまったわけではない。JTrimで確認して背景色の透明化を解除すると次のように青地に赤の画像になる。

JTrimで20091110-GIMP1.gifの透明化を解除

 さて、カラーマップに「青」がない【20091110-GIMP1.gif】のアルファチャンネルをインデックスカラーのまま削除すると透明だった部分を埋める候補は「赤」しかない。だから「赤地に赤」の真っ赤な画像になるのだろう。

 このカラーマップには別の色を追加することができる。Ctrlキーを押しながらカラーマップ右下の「+」をクリックするとGIMPの現在の背景色(色はツールボックスで確認・変更)を追加できる。

20091110-GIMP1.gifのカラーマップに青を追加

 GIMPの現在の背景色を青にして、カラーマップに「青」を追加した後にアルファチャンネルを削除すると、次のように「青地に赤」の画像になる。

青地に赤のGIF画像

 画像モードをRGBにしなくても背景色を復活させることができた。
 注意しなければいけないのは、GIMPの現在の背景色を復活させたい背景色に一致させておくことである。(追記:そうしなくても大丈夫な方法を【透過GIFの透過色をGIMPで復活させる方法】に書いた。そちらを読めば、この記事の以下は読む必要がないような気がする。

GIMPの描画色と背景色

 GIMPの背景色が「赤」の場合は「赤地に赤」の真っ赤な画像になってしまうし、GIMPの背景色が「白」や「黒」などカラーマップにない色でもやはり「赤地に赤」の真っ赤な画像になってしまう。アルファチャンネルを削除する前にツールボックスで確認した方が良い。

 GIMPでは透過GIFを開いた際に透明化されている背景色の情報をカラーマップに追加してくれないらしく、せっかくカラーマップに背景色を追加してもGIMPで作業する限り意味がないように感じるが、透過GIFをGIMPで加工した後に再び保存する際にはカラーマップが重要になる。例えば【20091110-GIMP1.gif】をGIMPで開いた後にGIMPの背景色を「白」にしてすぐに「名前を付けて保存」すると次のように透明化された背景色が「白」の透過GIFになる(JTrimなどで確認してください)。

透明な地に赤のGIF画像(背景色は白)

 【20091110-GIMP1.gif】をGIMPで開いた後にGIMPの背景色を「黒」にしてすぐに「名前を付けて保存」すると次のように透明化された背景色が「黒」の透過GIFになる(JTrimなどで確認してください)。

透明な地に赤のGIF画像(背景色は黒)

 【20091110-GIMP1.gif】をGIMPで開いた後にGIMPの背景色を「緑」にしてすぐに「名前を付けて保存」すると次のように透明化された背景色が「緑」の透過GIFになる(JTrimなどで確認してください)。

透明な地に赤のGIF画像(背景色は緑)

 このようなトラブルを避けるためには、カラーマップに透明化されている背景色を追加しておけば良い。【20091110-GIMP1.gif】ではカラーマップに「青」を追加してから、上記のようにGIMPの背景色を「白」「黒」「緑」にして「名前を付けて保存」しても透明化された背景色が「青」の透過GIFになる。下の図はGIMPの背景色を「緑」にして「名前を付けて保存」したが、カラーマップに「青」を追加した後に保存したので透明化された背景色が「青」になっている。

透明な地に赤のGIF画像(背景色は青)

 透過GIFを作成する際にGIMPではカラーマップが無視されているようで無視されていないようである。自分が作った透過GIFなら透明化した背景色を覚えているかもしれないし、JTrimなど確認できるソフトもある。GIMPでは透明化されている背景色を確認することはできないのだろうか。できればトラブルを避けやすいと思うのだが…。

 さて、実は今後のブログの画像をGIFではなくPNG8にしようかと思っていて、その前に【GIMPとPhotoFiltreの透過GIFで頭が混乱】と同じことをPNG8でも確認しようとしたのだが、場合分けの量が多くなりすぎて途中で挫折した。工夫次第でカラーマップの情報を残したまま(未使用の色を削除しない状態で)保存できそうだが、保存する際のカラーマップで透明化された背景色の扱いが変わりそうである。「背景色を保存」「透明ピクセルの色の値を保存」のオプションはあるのだが、共にチェックしていても保存する際のカラーマップの状態で異なるらしい。とりあえず【20091110-GIMP1.gif】をGIMPで開いて透過PNGとして保存し直す際にもカラーマップに「青」を追加してからにすればJTrimで透明化された背景色が「青」であることを確認できるファイルになるらしいが、カラーマップからは「青」が削除されてしまうらしい(追記:透明化した「青」のカラーインデックスが「0」ならばカラーマップに残されるらしい。下の図の「青」のカラーインデックスは「1」だった)。

透明な地に赤のPNG画像(カラーマップに「青」を追加して保存)

 カラーマップに「青」を追加せずに単に透過PNGとして保存すると、JTrimで確認した際に透明化された背景色は「青」ではなかった。

透明な地に赤のPNG画像(カラーマップに「青」を追加せずに保存)

 カラーマップに「青」を含むカラーマップを選択してカラーマップの情報を残したまま透過PNGとして保存するとJTrimで背景色の透明化を解除すると変になるようである。
(追記:カラーマップから「青」以外の色が一つ削除されていて、その色が透過色にされていた。下の図はインデックスカラーにする際に「Default(23)」を選択したのだが、青を透明化しておいたはずなのに、Magentaが透明色にされていて、Magentaはカラーマップから削除されていた。Magentaはカラーマップの順番で赤の次の2番目なので、カラーマップに青を2つ用意して、その一つを2番目にすれば、透明化される背景色は青になりながらも、カラーマップから青が削除されずに済むかもしれない。「2」番目というのは下の図の場合であって、もしかしたら未使用の色の内でカラーインデックスがもっとも小さい色が透明色として選択されるのかもしれない。下の図でもしも「青」と「Magenta」が透明化されずに残されていたら「Cyan」が透明色として選ばれるのかもしれない。透明化する色「青」を2つに増やさずに保存後もカラーマップに残すには、「青」のカラーインデックスを「0」にすれば良いかもしれない。すなわち、透明化する色をカラーマップの一番最初、カラーインデックス「0」に配置すれば、透明化した色は保存後もカラーマップに残されるかもしれない。

透明な地に赤のPNG画像(カラーマップは「Default(23)」で「未使用の色をカラーマップから削除」しない)

 とにかく、GIMPでGIFやPNG8を扱う際にはカラーマップが重要なことは分かった。この記事を読んでいる方も気をつけてほしい。


nice!(0)  コメント(0)  トラックバック(0) 
カテゴリー:コメントやメールを読んで
共通テーマ:パソコン・インターネット

読者の反応

nice! 0

sonet-asin-area

コメント 0

コメントを書く 

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。
captcha

トラックバック 0

トラックバックの受付は締め切りました