GDでの画像を使ったマスク処理

写真なんかに自由に署名を入れられたらなぁ、と言うことで
GDを使って、署名を入れられるような処理を書いてみました。

$basePic = imagecreatefrompng("img/Picture.png");
$signPic = imagecreatefrompng("img/sign.png");

// 透過色の設定
$white = imagecolorallocate ($signPic, 255, 255, 255);
ImageColorTransparent($signPic, $white);

header("Content-type: image/png");

$src_w = imagesx($signPic);
$src_h = imagesy($signPic);

// サインPICを左上に配置
imagecopymerge($basePic, $signPic, 0,0, 0,0,$src_w,$src_h, 99);

// サインPICを右上に配置
imagecopymerge($basePic, $signPic, imagesx($im) - $src_w, 0, 0,0,$src_w,$src_h, 99);

// サインPICを左下に配置
imagecopymerge($basePic, $signPic, 0, imagesy($im) - $src_h, 0,0,$src_w,$src_h, 99);

// サインPICを右下に配置
imagecopymerge($basePic, $signPic, imagesx($im) - $src_w, imagesy($im) - $src_h, 0,0,$src_w,$src_h, 99);

imagepng($basePic);

imagedestroy($signPic);
imagedestroy($basePic);

「Picture.png」部分には、フルカラーの写真などを指定し、
「sing.png」には、12*40 ピクセル位の画像で黒地に白で適当に署名文字を書いた画像を指定します。

そうすると、「sing.png」の白の部分が透過されて、マスク処理されたように
元の画像に転写されるので、ちょっとしたマスキング署名になります。