Monthly Archives: 7月 2012

libgdで背景が透過な画像をつくる

0
Filed under C
Tagged as , ,

久しぶりすぎるブログの更新になってしまいました。。

さっそくですが、今はもう本家サイトが落ちている libgd について触る機会があったので、
備忘録として残しておきます。

C言語で画像を生成、結合するときに利用するlibgdですが、背景を透過にしたい場合のお話。

【普通のパターン】

gdImagePtr im;

im = gdImageCreate();
 :
//実際の生成とか結合

というようになりますが、このままだと、
一番最初に現れた色がイメージの背景色になってしまいます。

たとえば、画像をcopyして生成とかした場合に、それが透過画像で黒いborderがついてたりすると
透過部分は色がないので、スルーして、一番最初にくる黒を背景として、全体に利用されます。

そこで背景色を透過にするにはどうするのか。
以下のようにしたらできました。

【変更した後】

gdImagePtr im;
int bgColor;

im = gdImageCreate();
bgColor = gdImageColorAllocate(im, 0, 0, 0); 
 //↑使わないので色指定は何でもいい(ちなみに0,0,0は黒)

gdImageColorTransparent(im, bgColor); 
 //↑bgColorを透過で更新
 :
//実際の生成とか結合

というように一旦一番最初に適用される色を定義して、
その後で、そのcolorを透過に塗り替えるということですね。

まあ、ありふれた内容ですね。

とりあえず、サクっとできてよかった。