Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP调整图像水印的大小?_Php_Gd - Fatal编程技术网

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

如何使用PHP调整图像水印的大小?,php,gd,Php,Gd,嗨,我正试图在上传的图像上调整水印png的大小,但就是不明白,我做错了什么 这是我的密码: // BEGIN WATERMARK $watermark = imagecreatefrompng ('watermark.png'); $watermark_width = imagesx($watermark); $watermark_height = imagesy($watermark); $image = imagecreatetruecolor($watermark_width, $wat

嗨,我正试图在上传的图像上调整水印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
用途:或

注意:我假设您还有另一个
imageSX
imageSY
函数,因为内置函数都是小写:
imageSX
imageSY

编辑1:php中的函数名不区分大小写,但调用声明中出现的函数是一种很好的做法


编辑2:添加更多代码以保持透明度。

您可以使用此功能调整戳记的大小。不要使用
imagecopyresized
,因为它会损坏您的图像,并且会降低质量。最好是
imagecopyresampled
imagesavealpha
imagealphabling
为您的邮票提供透明背景

$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中的所有内容都不区分大小写。悲伤但真实。它就像一个符咒。你救了我一个晚上,谢谢你cwps。@miken32至少它是一致的:-)@miken32我刚刚发现php中的函数不区分大小写。哦,我的上帝!我的一生都是谎言。@AlesTom你能接受这个答案吗
$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);