[英]Adding watermark with PHP
这是我的PHP水印功能:
function img_watermark($image) {
$stamp = imagecreatefrompng('images/wm.png');
$im = imagecreatefromjpeg($image);
$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);
// Copy the stamp image onto our photo using the margin offsets and the photo
// width to calculate positioning of the 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);
}
这是我的HTML代码:
<img src="<?php img_watermark('images/ornek.jpeg');?>" />
但这给了我这样的东西:
....... <, u /,R M 7 a4 3eY&k Tƃ#Ki 'S。^ A 2_ ^ L* \\ LMSOݺ7 ''@@ \\ k *) 4I 5 <C LP /W 2w qopwnnnw3e ҂g QB\\ _ȋc # F $ `4;; [T b -XגsΩ( J “G ; = it。* ˗> Nw o #¨8 J wz V W ??? > { # Z 1 /?7VWo?CRVS3ӷ?ڝ}Ϳ O=q 〜 ? IY ?MvN Y k 7[ hwg < / O s7o。 u 3F8 | 〜ᗟ} v' # g 6 / | ~~ᫍ( ?p( B。 ?sY G> | ŗV)% \\Z J 7/ ..............
我希望它向我显示带水印的图像。 我怎样才能解决这个问题?
您设置错误。 您的HTML应该如下所示:
<img src="image.php?src=images/ornek.jpeg" />
和image.php
应该是这样的:
$stamp = imagecreatefromjpeg('images/wm.png');
$im = imagecreatefromjpeg($_GET['src']);
$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);
// Copy the stamp image onto our photo using the margin offsets and the photo
// width to calculate positioning of the 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);
您不能将二进制数据放在图像标签的src
属性中。
src
属性通常需要图像的URL。
您可以使用base64编码来实现:
$file = base64_encode(img_watermark('images/ornek.jpeg'));
echo "<img src='data:image/jpeg;base64,".$file."' alt='watermarked image'>";
并删除函数中的header
行,除非您的PHP文件应该发送图像数据而不是HTML。 最好不要把那些东西混在一起:(
将其设置为标题:
header("Content-type:image/jpeg");
代替:
header("Content-type:image/png");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.