我见过其他答案,但没有解决这个问题,我有这个代码
$stamp = imagecreatefrompng('w.png');
$im = imagecreatefromjpeg('image.jpg');
$stw = imagesx($im)/4;
$marge_bottom = 10;
$marge_right = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);
imagecopyresized($im, $stamp, $marge_right, $marge_bottom, 0, 0, $stw, $stw, imagesx($stamp), imagesy($stamp));
header("Content-Type: image/jpeg");
imagejpeg($im,NULL,100);
后呈锯齿状
水印应如下所示:
修改
这是针对此问题的任何人的解决方案,请将imagecopyresized()
函数替换为imagecopyresampled()
imagecopyresampled($im, $stamp, $marge_right, $marge_bottom, 0, 0, $stw, $stw, imagesx($stamp), imagesy($stamp));
答案 0 :(得分:3)
尝试使用imagecopyresampled
代替imagecopyresized
:
imagecopyresampled($im, $stamp, $marge_right, $marge_bottom, 0, 0, $stw, $stw, imagesx($stamp), imagesy($stamp));
从手册:
imagecopyresampled()将一个图像的矩形部分复制到另一个图像,平滑地插入像素值,这样,特别是减小图像的大小仍然保持很大的清晰度。
答案 1 :(得分:0)
我不知道你在这里的代码的所有细节。但是,我知道任何缩小的图像都必须保持其纵横比,以便在较小的尺寸下显示相同。如果在缩小时使用绝对值来定义图像的宽度和高度,则图像中锯齿状边缘的可能性会更高,因为图像不会将其纵横比保持在较小的尺寸。因此,不要定义绝对值,而是使用动态值。因此,例如,而不是使用像10px或转换为百分比(%)的东西。