在PHP中添加水印

时间:2014-04-26 17:38:43

标签: php gd

我为客户制作了一个定制的CMS ....

在管理部分,他为工人的个人资料添加照片......

我需要为管理员上传的所有照片添加水印....

上传它们时无法完成(或者,至少我理解的是,在将php / GD功能应用到服务器之前,图像必须在服务器上?)...所以它需要应用于图像在离开数据库的路上......

foreach($get_all_photos_profile_array AS $get_photos_profile_each)
{
    echo "<img class=\"profile_photo\"src=\"$get_photos_profile_each\" alt=\"profile image\" width=\"270px\" height=\"405px\"/>";
}

这是没有添加水印的情况....输出该特定配置文件的所有图像....

我尝试用以下内容替换循环内的东西:

$stamp = imagecreatefrompng('stamp.png');
$im = imagecreatefromjpeg('photo.jpg');

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


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

// Output and free memory
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);

凡stamp.png是水印而photo.jpg就是......你明白了。

我花了一些时间尝试不同的事情,但没有运气......

如何在echo语句中放置'imagepng($ im)'以便为每张照片执行此操作?

此外,标题真的很重要吗?努力重新排列代码,以便在文件的开头发送...

2 个答案:

答案 0 :(得分:0)

我认为你的目标是:

<img src="addWatermark.php?image=photo.jpg">

然后将所有水印代码放入addWatermark.php并将文件加载更改为:

$im = imagecreatefromjpeg($_GET['image']);

标题确实很重要。

答案 1 :(得分:0)

由于它是CMS,理想情况下,您只想在每个图像上传时对其运行一次水印代码 - 然后将新的水印图像保存到单独的文件中: -

$output_filename="path/to/savedfile.png";
imagepng($im,$output_filename);
imagedestroy($im);

然后你需要在某处存储带水印的文件名,每当你想要显示该图像的水印版本时,只需输出一些引用你刚保存的图像的html: -

echo "<img class=\"profile_photo\"src=\"".$output_filename."\" alt=\"profile image\" width=\"270px\" height=\"405px\"/>";