アレルギー性鼻炎しんどいです。今日はGDライブラリのお話。

風邪でだいぶしんどかったんですが、治ったと思ったら鼻が治らず・・・実はアレルギー性鼻炎なのです。去年の11月に耳がふさがった感じになって耳鼻科に行って初めて知った事実ですが・・・。なんのアレルギーなのかはさっぱり。たぶんホコリとかだと思います。



今日はImagickの合成をGDライブラリでやります。なかなか時間が取れなくて見本が出せないのが残念です。
時間ができたら合成した見本とか載せたいです。


さて、コードです。
実は合成するだけならImagickとやり方とかほとんど変わらないです。
GDライブラリの場合読み込むときにそれが何なのかによって指定する必要があります。
ImagickでのreadImageがImageCreateFrom〜〜に変わります。
まずjpg
$image = ImageCreateFromJPEG(ファイル場所/ファイル名.jpg);
そしてpng
$image = ImageCreateFromPNG(ファイル場所/ファイル名.png);
最後にgifです。
$image = ImageCreateFromGIF(ファイル場所/ファイル名.gif);

後はそんなに変わらない。
ImagickのcompositeImageがimagecopyに変わるだけ。
imagecopy($image,$image2,0,0,0,0,240,252 );
ただimagecopyの方がいろいろ指定できます。
3,4番目の数字が$imageのどこに置くか(x,y)を指定して、$image2の開始位置を5,6番目の数字で指定(x,y)し、7,8番目の数字の場所(x,y)までをコピーするという感じなのです。
なのでこういう感じにすると、
imagecopy($image,$image2,60,0,0,0,240,252 );
$image2が少し右に寄った状態で合成されます。
あとは画像として出力するだけ。


実はGDライブラリだとバイナリに変換できないのです。
DBに入れようと思うとファイル書き出しして読み込んでになります。
(間違ってたらすいません。)


なので後はファイル出力のみ・・かな?
これも拡張子によって
imagejpeg($image,"./ファイル場所/ファイル名.jpg");
imagepng($image,"./ファイル場所/ファイル名.png");
imagegif($image,"./ファイル場所/ファイル名.gif");
の3種類に分かれます。わかりやすくていいですよね。

後はお片付けします。
imagedestroy($image);
imagedestroy($image2);



私はImagick使いすぎてあまりGDライブラリを使ってないのですが、
GDライブラリは大量の画像処理の際の速度に思わず「はふん」ってなります。
Imagickだと結構な時間待つんですけど、GDライブラリは意外と早く終わります。

Imagickじゃなきゃできないことってありますけど、GDライブラリじゃないとできないこともあると思うので用途分けして使うのが一番です。
私は慣れてるからってついついなんでもかんでもImagickで合成しちゃうんですけどね・・・。サーバーの負荷を考えるとよろしくないですが。



というまだGDライブラリ初心者の話でした。




早く鼻炎をなんとかしないと!(`・ω・´)