繁体   English   中英

在PHP中添加水印

[英]Adding watermark in PHP

我已经为客户量身定制了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是...。

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

如何在回显语句中放置“ imagepng($ im)”,以便对每张照片进行处理?

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

我认为您的目标是:

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

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

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

标头确实很重要。

由于它是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\"/>";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM