0

2つの画像をマージしようとしています。featuring7.png の背景は透明です。しかし、最終的な画像は次のようになり、暗いパッチがあります。
ここに画像の説明を入力

ここにコードがあります:助けてください:

$src = imagecreatefrompng('images/featured7.png');
$dest = imagecreatefromjpeg('images/1.jpg');
imagealphablending($dest, false);
imagesavealpha($dest, true);
imageColorAllocateAlpha($dest, 0, 0, 0, 127);
imagecopymerge($dest, $src, 0, 0, 0, 0, 90, 90, 100);
header('Content-Type: image/png');
imagepng($dest);
imagedestroy($dest);
imagedestroy($src);

新しく変更されたコードは次のとおりです。ただし、小さな画像がより右中央に移動したことを除いて、同じ結果が得られます。

$img1 = imagecreatefrompng('images/featured7.png');
$img2 = imagecreatefrompng('images/1.jpg');
$image = imagecreatefromjpeg("images/1.jpg"); //
$image1 = imagecreatefrompng("images/featured7.png");//
$size = getimagesize("images/featured7.png");
$overlay = imagecreatetruecolor(80, 80);
$white = imagecolorallocate($overlay, 229, 229, 229);
imagefilledrectangle($overlay, 0, 0, 80, 80, $white);
imagecolortransparent($overlay,$white);  
imagecopy($overlay, $image1, (80-$size[0])/2, (80-$size[1])/2, 0, 0,   $size[0],$size[1]);
imagecopymerge($image, $image1, 280, 30, 0, 0, 80, 80, 100);
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);

ここに2つの画像があります:
ここに画像の説明を入力
ここに画像の説明を入力

4

1 に答える 1

1

私は前に同じ問題に遭遇しました、そして私は解決策が好きです、私の質問と答えをここで見てください:

PHP imagecopymerge ソース イメージの背景が黒 に透明に変更される場合、サンプルは次のように使用します。

$dit = imagecreatefromjpeg("./dst.jpg"); //
$source = imagecreatefrompng("./source.png");//
$size = getimagesize("./source.png");
imagecopy($dit, $source, 0,0, 0, 0, $size[0], $size[1]);
header('Content-Type: image/jpeg');
imagejpeg($dit);
imagedestroy($dit);

ここに画像の説明を入力

于 2014-02-21T05:41:24.783 に答える