libgdで背景が透過な画像をつくる
久しぶりすぎるブログの更新になってしまいました。。
さっそくですが、今はもう本家サイトが落ちている 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を透過に塗り替えるということですね。
まあ、ありふれた内容ですね。
とりあえず、サクっとできてよかった。