0

image(JPG)に透かし(PNG、透明)を追加するスクリプトがあります。キャッチでうまく機能します-何らかの方法でウォーターマークが色を変えて透明ではなくなります。これは、ウォーターマークを追加するために使用するコードです。

$im = imagecreatefromjpeg('../../pics/'.$ran.'_large.jpg');
$stamp = imagecreatefrompng('a.png');

$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

imagecopymerge($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp), 70);

// Save the image to file and free memory
imagejpeg($im, '../../pics/'.$ran.'_large.jpg');
imagedestroy($im);

PHPが透かしを生成した後の透かし付きの画像(間違った方法)

4

3 に答える 3

1

出力画像形式は jpeg です。JPEG は透明度をサポートしていません。出力形式を png に変更します。

また、イメージマジックを使用することをお勧めします。Gd は非常に原始的です。

于 2012-04-19T06:27:52.247 に答える
0

PNG から作成した後にアルファ マップを含む PNG 画像を作成する場合は、次の関数を忘れないでください。

imagealphablending($stamp,false);
imagesavealpha($stamp,true);

違いがあるかどうかを確認しますか?

于 2012-04-19T06:27:27.977 に答える
0

助けてくれてありがとう -このサイトで答えを見つけました

$im = imagecreatefromjpeg('../../pics/'.$ran.'_large.jpg');
$stamp = imagecreatefrompng('a.png');

imagealphablending($im, true);

$marge_right = 10;
$marge_bottom = 10;

$sx = imagesx($stamp);
$sy = imagesy($stamp);

$offset = 10;

imagecopy($im, $stamp, imagesx($im) - imagesx($stamp) - $offset, imagesy($im) - imagesy($stamp) - $offset, 0, 0, imagesx($stamp), imagesy($stamp));
// Save the image to file and free memory
imagejpeg($im, '../../pics/'.$ran.'_large.jpg');
imagedestroy($im);
于 2012-04-20T07:18:59.340 に答える