2017-08-25 33 views
0

イメージにフレームをオーバーレイするためにPHP GDを使用しようとしています。ここに私のソースイメージと私が達成しようとしているの例です...JPGの上にPHP GDオーバーレイトランスペアレントPNG

フレーム画像が透過PNGで、私のコードは次のようになります...

$dest = imagecreatefromjpeg('image.jpg'); 
$src = imagecreatefrompng('frame.png'); 

imagecopymerge($dest, $src, 0, 0, 0, 0, 300, 300, 50); 

header('Content-Type: image/jpeg'); 

imagejpeg($dest, 'output.jpg'); 

imagedestroy($dest); 
imagedestroy($src); 

私の出力イメージはフレームのない中間のイメージと同じように見えます。私が間違っていることは誰でも明白に見つけられますか?

答えて

1

imagecopymerge()のドキュメントを詳しく見てください。 imagecopymerge()は正確に9つのパラメータを必要とし、スクリプトには10​​が与えられます。

編集: imagecopymerge()はアルファチャンネル自体を処理できません。余分なコード行を追加する必要があります。

$src = imagecreatefromjpeg('image.jpg'); 
$dest = imagecreatefrompng('frame.png'); 

imagealphablending($dest, false); 
imagesavealpha($dest, true); 
imagealphablending($src, false); 
imagesavealpha($src, true); 

$insert_x = imagesx($src); 
$insert_y = imagesy($src); 

$white = imagecolorallocatealpha($dest, 255, 255, 255, 127); 
imagecolortransparent($dest, $white); 
imagecopymerge($src, $dest, 0, 0, 0, 0, $insert_x, $insert_y, 100); 

header('Content-Type: image/jpeg'); 
imagejpeg($src); 

imagedestroy($dest); 
imagedestroy($src); 
+0

は、オリジナルのポストを修正それでもfightstarr20 @同じ出力 – fightstarr20

+0

を得ることが行ヘッダー(「Content-Typeの:画像/ JPEG」)を削除することを確認してくださいあり:ここではそれがどのように見えるかです。 imagejpeg($ src、 'output.jpg')でファイルを保存する場合は、 –

+0

説明をありがとう – fightstarr20