4

シンプルに見えますが、そうではありません:(

画像(jpg)に透かし(透過png)のようなものを追加しようとしています。これは私が使用しているコードです:

$width = 800; 
$height = 600; 
$bottom_image = imagecreatefromjpeg("portrait1.jpg"); 
$top_image = imagecreatefrompng("man2.png"); 
imagesavealpha($top_image, true); 
imagealphablending($top_image, true); 
imagecopy($bottom_image, $top_image, 200, 200, 0, 0, $width, $height); 
header('Content-type: image/png');
imagepng($bottom_image);

画像をマージすると、png は正しい場所に配置され、その上と左はすべて問題ありません (jpg がコピーされます) が、それ以外はすべて黒です。

imagesavealpha と imagealphablending を false に設定してみましたが、違いはありませんでした。

結果の画像はhttp://ekstrakt.selfip.com/photobomb/image.phpで確認できます。

ネットでいろいろ調べたのですが、解決策が見つかりません。

どんな助けでも大歓迎です。

4

2 に答える 2

3

あなたの$width$heightは、写真ではなく、透かしの寸法でなければなりません。あなたがそうするように言っているのは、透かしを実際よりもはるかに大きなサイズでコピーすることです。存在しない画像の一部 (範囲外の座標) を読み取ると、結果は不透明な黒になり、表示される結果が得られます。

于 2011-11-02T18:46:36.237 に答える
1

代わりにimagecopymerge()を使用してくださいimagecopy()

U も好きかもしれませんimagesavealpha()

于 2011-11-02T18:43:26.123 に答える