首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP imagecopy函数根据主图像的高度和宽度更改图章大小

PHP imagecopy函数根据主图像的高度和宽度更改图章大小
EN

Stack Overflow用户
提问于 2018-10-26 05:47:21
回答 1查看 739关注 0票数 0

我正在尝试添加一个水印(徽标)到每个上传到网站的图像。

所以,我使用imagecopy PHP函数在主图像( jpg图像)上添加了一个水印( png图像),但问题是logo的大小是根据主图像的大小(高度和宽度)而变化的,这意味着如果我上传一张4000x2000的图像,logo的大小大概是100x100,如果主图像的大小是1000x500,那么图章就会比真实的大小(546x537)大。

图片示例:

代码语言:javascript
运行
复制
https://crkemlak.com/appimg/199f8486d7d77007771f2f450dffca4d.jpeg
https://crkemlak.com/appimg/d6f9fd02999eced76eac9a6995df904f.jpeg
https://crkemlak.com/img/stamp.png

我使用以下代码将水印添加到图像中:

代码语言:javascript
运行
复制
$im = imagecreatefromjpeg('../appimg/'.$filenamerand);

$originalWidth= imagesx($im);
$originalHeight = imagesy($im);

$stamp = imagecreatefrompng('../img/stamp.png');
$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);
imagecopy($im, $stamp, ($originalWidth-$sx)/2, ($originalHeight-$sy)/2, 0, 0, imagesx($stamp), imagesy($stamp));

我需要你的帮助来解决这个问题,我需要使水印是在它的实际大小在任何大小的主要jpg图像

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-09-03 15:51:00

我使用了imagecopyresized,这样水印就可以缩放到在任何输入图像上看起来都是一样的,而不管它的大小。可能有更好的方法去做。我不确定当缩放具有透明背景的图像时质量有多好。这是在git

代码语言:javascript
运行
复制
$watermark = imagecreatefrompng('watermark.png');
$image = imagecreatefromjpeg('main-image.jpg');

$wm_x = imagesx($watermark);
$wm_y = imagesy($watermark);
$img_x = imagesx($image);
$img_y = imagesy($image);

// calculate watermark size
$wm_scale = 19; // set size in relation to image
$wm_w = $img_x/$wm_scale;
$wm_aspect = $wm_y/$wm_x;
$wm_h = (int) ($wm_aspect * $wm_w);

// calculate margin
$margin_scale = 6; // set margin in relation to new watermark size
$margin_right = $wm_w/$margin_scale;
$margin_bottom = $wm_h/$margin_scale;

// calculate watermark destination
$dst_x = $img_x - $wm_w - $margin_right;
$dst_y = $img_y - $wm_h - $margin_bottom;

imagecopyresized ($image, $watermark, $dst_x, $dst_y, 0, 0, $wm_w, $wm_h, $wm_x, $wm_y);

// Output and free memory
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52998567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档