2010年9月11日土曜日

PHPのGD(image)オブジェクト同士を合成するときのメモ

PHPの画像系関数はホントに癖があります。
特にアルファを持ったPNGを合成する時はかなり厄介。

ImageAlphaBlending()
ImageSaveAlpha()

の設定をきちんと調整しないと、思ったような結果が出てくれません。
  • $~ImageObject は ImageCreateFrom~ して作った画像オブジェクト
  • $BackgroundImageObjec の透過は保存不要。 $ForegroundImageObject の透過は保存必要。
  • 両オブジェクトの大きさ(縦と横のピクセル数)が同じ
という前提条件でのコードメモ。
ImageAlphaBlending($BackgroundImageObject,TRUE);
ImageSaveAlpha($BackgroundImageObject,FALSE);
ImageAlphaBlending($ForegroundImageObject,FALSE);
ImageSaveAlpha($ForegroundImageObject,FALSE);
ImageCopy(
    $BackgroundImageObject,
    $ForegroundImageObject,
    0, 0, 0, 0,
    ImagesX( $ForegroundImageObject), ImagesY( $ForegroundImageObject)
);
PHPマニュアルのコメント欄にもいろんな関数が張り付けあるので、参考にしてみてください。