背景が透明な画像を作る

[戻る]

時折、背景が透明な画像を作って WEB ページに張りたい時があります。

どうやったら作れるのだろうとネットで調べると, PhotoShop を使う手法が沢山紹介されています。 っが、そんな立派なソフトは持っていません。

別解として Windows 付属の MS-Paint でもできます。やり方は

  1. 絵を描く。説明するまでもないですが、MS-Paint の色指定の部分で クリックすると色が変わります。とりあえず、 透明にしたい部分は、他で用いられてない適当な色にしておきます。
  2. ファイル形式を「GIF」にして保存する。
  3. MS-Paint の色指定の部分で、クリックして背景色を 1. で配色した色に する。
  4. メニューの「変形」−「背景色を不透明にする」を選びチェックをはずす
  5. 上書き保存して出来上がり。
と比較的簡単です。 しかしこのやり方は、出来る時はできるのですが出来ない時もあります。 理由は分かりません。

そういう訳が分からん動きをされると精神衛生上好ましくありません。 他の方法は無いかと探してみると giftransを使う方法を見つけました。 やり方は例えば

giftrans -t #ff0000 -o bbb.gif aaa.gif
とすると、aaa.gif の中で赤い部分 (#ff0000) を透明にして bbb.gif という名前で吐き出します。

なお、MS-Paint の色指定の部分は

となっていますが、それぞれの色番号は次の通りです。 この数を指定すればいいわけです。

#000000 #808080 #800000 #808000 #008000 #008080 #000080 #800080 #808040 #004040 #0080ff #004080 #8000ff #804000
#ffffff #c0c0c0 #ff0000 #ffff00 #00ff00 #00ffff #0000ff #ff00ff #ffff80 #00ff80 #80ffff #8080ff #ff0080 #ff8040

ただし、腹立たしいことにこれでも上手くいかない時があります。 そういう時は手間ですが、まず

giftrans -l -e hoge.txt aaa.gif
と打ち、画像中使われている色情報を取得します。 GIF というのは、色に番号 0 〜 255 までの番号を付け 何番の色はどんな色という情報を仕込んで圧縮しており、 そのテーブルを取得するわけです。 ちなみにこのようなしくみのため画面内には 256 色しか 同時発色できません。 余談ですが、こういうしくみなので写真等の用途には不向きです。

この表示で背景にしたい色が何番に定義されているかを確認して

giftrans -t 7 -o bbb.gif aaa.gif
という風に番号指定するといいようです。 ただし、複数の色番号が同じ色を指している時があります。 もし透明にならない場合は、重複してないか確認してください。

ところで GIF にはライセンスがらみで暗黒面があります。 まぁ特許自身は 2003 〜 4 年頃に切れたという話なので、 今は大丈夫かもしれません (よくわかりません)。 危ない橋を渡りたくないとか、そんな薄汚れたフォーマットは使いたくない というのであれば、ライセンス上問題ない PNG にコンバートすればいいと思います。 Linux だったらプレインストールされてるかもしれないし、 ここにソースその他が ある gif2png というのがそのコンバータです。 一方、Windows 用のバイナリでしたら ここ にありました。/bin/gif2png.exe がそれです。

背景が透明な gif を作って、

gif2png bbb.gif
とでも打つと bbb.png が出来上がります。 png で直接透明化できれば楽なんでしょうが、ちょっとやり方が分かりませんでした。


2006.8