我为客户制作了一个定制的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)'以便为每张照片执行此操作?
此外,标题真的很重要吗?努力重新排列代码,以便在文件的开头发送...
答案 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\"/>";