-1

本題に入ります。htaccess を使用してウォーターマークをインストールしました。すべてが機能していますが、200x200 より小さい画像に透かしを配置し​​ないようにスクリプトを作成する方法がわかりません。また、透かしは、watermark.png があるはずの下部に灰色がかった線を表示しています。その行を削除するにはどうすればよいですか?

努力を見せなかったことをお詫びします。私は4時間調査を行い、私の写真が台無しになるほどひどく修正しました。小さな画像に透かしを配置し​​ないようにphpに追加する行を見つけましたが、配置する場所がわかりません。

これは、画像に透かしを配置する .php です。助けてくださいそれは私にとって複雑な方法ですか.

<?php
$basedir="/uploads/";
$watermarkimage="tbwm.png";

$file=basename($_GET['i' ]);

$image = $basedir."/".$file;
$watermark = $basedir."/".$watermarkimage;

$im = imagecreatefrompng($watermark);

$ext = substr($image, -3);

if (strtolower($ext) == "gif") {
if (!$im2 = imagecreatefromgif($image)) {
echo "Error opening $image!"; exit;
}
} else if(strtolower($ext) == "jpg") {
if (!$im2 = imagecreatefromjpeg($image)) {
echo "Error opening $image!"; exit;
}
} else if(strtolower($ext) == "png") {
if (!$im2 = imagecreatefrompng($image)) {
echo "Error opening $image!"; exit;
}
} else {
die;
}
imagefilledrectangle($im2, 0  , (imagesy($im2))-(imagesy($im)) , imagesx($im2)  , imagesy($im2) , imagecolorallocatealpha($im2, 0, 0, 0, 100) );
imagecopy($im2, $im, (imagesx($im2)-(imagesx($im))), (imagesy($im2))-(imagesy($im)), 0, 0, imagesx($im), imagesy($im));

$last_modified = gmdate('D, d M Y H:i:s T' , filemtime ($image));

header("Last-Modified: $last_modified");
header("Content-Type: image/jpeg");
imagejpeg($im2,NULL,95);
imagedestroy($im);
imagedestroy($im2);

?>
4

1 に答える 1

1

簡単な方法:関数呼び出し
imagecopyif(imagesx(im2) > 250 && imagesy(im2) > 250)

if (imagesx($im2) > 250 && imagesy($im2) > 250) {
    imagefilledrectangle($im2, 0  , (imagesy($im2))-(imagesy($im)) , imagesx($im2)  , imagesy($im2) , imagecolorallocatealpha($im2, 0, 0, 0, 100));
    imagecopy($im2, $im, (imagesx($im2)-(imagesx($im))), (imagesy($im2))-(imagesy($im)), 0, 0, imagesx($im), imagesy($im));
}

長い道のり:
透かしim用に作成されたすべてのものをif

于 2012-12-22T02:07:14.427 に答える