php - 如何使用 PHP 调整图像上的水印大小?

标签 php gd

嗨,我正在尝试调整上传图像上的水印 png 大小,但就是不明白,我做错了什么。

这是我的代码:

// BEGIN WATERMARK

$watermark = imagecreatefrompng ('watermark.png');
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$image = imagecreatetruecolor($watermark_width, $watermark_height);
$_Dim[x] = imageSX($destImage);
$_Dim[y] = imageSY($destImage);
$logo_Dim[x] = imageSX($watermark);
$logo_Dim[y] = imageSY($watermark);
$x = $_Dim[x] - $logo_Dim[x];
$y = $_Dim[y] - $logo_Dim[y];
imagecopy ($destImage, $watermark, $x, $y, 0, 0, $watermark_width, $watermark_height);
imagedestroy ($watermark);

// END WATERMARK

最佳答案

您可以使用此功能来调整图章的大小。不要使用imagecopyresized,因为它会损坏您的图像并且您的质量会降低。更好的是imagecopyresampledimagesavealphaimagealphablending 为您的图章提供透明背景

$image = imagecreatefromstring(file_get_contents('The_img.jpg'));
$stamp = imagecreatefrompng('the_watermark.png');

$stamp_new = imagecreatetruecolor(100,50);
imagealphablending($stamp_new, false);
imagesavealpha($stamp_new, true);
imagecopyresampled($stamp_new, $stamp, 0, 0, 0, 0, 100, 50, imagesx($stamp),imagesy($stamp));

$margin = ['right' => 20, 'bottom' => 20]; // Смещение от края
imagecopy($image, $stamp_new,
imagesx($image) - imagesx($stamp_new) - $margin['right'],
imagesy($image) - imagesy($stamp_new) - $margin['bottom'],
0, 0, imagesx($stamp_new), imagesy($stamp_new));
$imageName = 'newimage.jpg';
$dirName = 'test_folder';
if(!file_exists($dirName)){
    mkdir($dirName, 0755, true);
    imagepng($image, $dirName.'/'.$imageName);
} else {
    imagepng($image, $dirName.'/'.$imageName);
}

ImageDestroy($image);
ImageDestroy($stamp);

关于php - 如何使用 PHP 调整图像上的水印大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34185256/

相关文章:

javascript - HTML/CSS/JS 不显示幻灯片图片

php - 从循环中的对象中删除项目

php - 将一个表的一列连接到另一个表的多列

javascript - 有没有一种方法可以使用网络语言根据用户名生成图像,例如iOS7收藏夹?

php - 使用 GD 调整大小和裁剪图像,同时保持纵横比

php - 来自目录的GD图像批处理

php - 获取mysql中删除的主键列表

php - 向Youtube API的PHP POST请求:获取服务器错误

php从一串图片内容中获​​取图片大小

php - 如何在 Wheezy Debian php 5.6 中安装 php5-gd