摘要:我们经常能在图片上看到一些水印,一般分为图片文字或者是两种一起的结合。那么给图片加水印就非常有必要了。怎么用实现给图片加水印呢先来看看效果使用库使用库来实现效果图像处理和手册正所谓授人以鱼不如授人以渔,光贴代码不讲实现过程的,都是耍流氓。
我们经常能在图片上看到一些水印,一般分为图片、文字或者是两种一起的结合。那为什么要加水印呢?目的是为了防止别人盗图、造假或者标注出处等,保护图片原作者的著作权或是劳动成果。那么给图片加水印就非常有必要了。
怎么用PHP实现给图片加水印呢?
先来看看效果
使用GD库来实现效果
图像处理和 GD - 手册
正所谓授人以鱼不如授人以渔,光贴代码不讲实现过程的,都是耍流氓。所以下面我会写功能的实现过程、过程所需要用到的函数。
内容基本都是干货,需要用到的时候可以方便查阅资料关键函数
下面是php实现两种水印方式的关键函数:
imagettftext 用 TrueType 字体向图像写入文本
imagecopymerge 拷贝并合并图像的一部分
两种水印的实现方式 图片水印准备两张图片
原图
水印图
实现过程
在php中加载这两张图片,得到一个图像资源数据类型。
根据不同的图片格式,使用对应函数
它们甚至可以加载一张来自网上的图片
读取图片宽高。
imagesx 取得图像宽度
imagesy 取得图像高度
getimagesize 取得图像大小
getimagesizefromstring 从字符串中获取图像尺寸信息
可能你会需要将水印图进行缩小或放大(如果不需要,可以跳过这一步)
等比例缩放
计算缩放比例,根据想要缩放到的值(比如一张宽度是500px的图片,想缩小成50px)
计算缩放之后的宽高
创建一个新的图像资源(新图像的宽高等于缩放之后的宽高)
imagecreatetruecolor 新建一个真彩色图像
拷贝部分图像并调整大小
imagecopyresized 拷贝部分图像并调整大小
参数说明(为了方便理解,我对参数进行了语义化)
imagecopyresized(目标图像资源, 原图资源, 粘到目标图像的起始水平坐标, 粘到目标图像的起始垂直坐标, 拷贝原图的起始水平坐标, 拷贝原图的起始垂直坐标, 最终想要的宽度, 最终想要的高度, 原图的宽度, 原图的高度);
使用imagecopymerge函数,拷贝水印图并合并到原图中。
简单分析形参都有哪些(为了方便理解,我对参数进行了语义化)
imagecopymerge(原图资源, 水印图资源, 水印水平坐标, 水印垂直坐标, 拷贝水印图的起始水平坐标, 拷贝水印图的起始垂直坐标, 要拷贝的宽度, 要拷贝的高度, 水印透明度);
水印透明度:透明度范围是0-100
输出图像
函数关键字image+图片格式 更多查看官方手册
imagejpeg 输出图象到浏览器或文件。
imagepng
imagegif
imagewbmp
...
如果要输出到浏览器中,需要设置content-type头部
header - 手册 发送原生 HTTP 头
常用对照表
释放图像资源
imagedestroy 销毁图像
文字水印简单分析形参都有哪些(为了方便理解,我对参数进行了语义化)
imagettftext(图像资源, 文字尺寸, 文字角度, 文字水平坐标, 文字垂直坐标, 文字颜色, 字体, 文本文字)
文字尺寸
GD库版本是1时,单位是像素(px),版本是2时,单位是点/磅(pt)
px,pt,em换算表
文字水平垂直基点位置
字符的左下角为基本点
文字颜色
颜色索引,通过imagecolorallocate函数创建
字体
字体的绝对路径
其他参考
绝对详解PHP 的imageTtfText()函数
如果这对你有帮助,或者能帮你节省一些时间,不如,点个赞吧~
原文地址
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/29600.html
摘要:在出现之前,项目中的图片添加水印的需求,必定是后端同学们来处理的,但是出来之后,前端终于可以站出来说,这个需求,交给我来壮哉我大前端,上周的任务就是在前端处理水印的效果,这个效果最重要的逻辑其实就几行代码,至于如何优雅的将这些简单的逻辑封装 在canvas出现之前,项目中的图片添加水印的需求,必定是后端同学们来处理的,但是canvas出来之后,前端终于可以站出来说,这个需求,交给我来!...
摘要:有时上传图片时,需要给图片添加水印,水印一般为文字或图片水印,下面就来看看两种添加方法。拷贝并合并图像的一部分更多库函数用法,请查手册相关文章实现图片上传时添加文字和图片水印 有时上传图片时,需要给图片添加水印,水印一般为文字或图片logo水印,下面就来看看两种添加方法。 一、文字水印 文字水印就是在图片上加上文字,主要使用gd库的imagefttext方法,并且需要字体文件。效果图如...
阅读 2156·2021-11-24 09:38
阅读 3223·2021-11-08 13:27
阅读 3065·2021-09-10 10:51
阅读 3065·2019-08-29 12:20
阅读 627·2019-08-28 18:28
阅读 3412·2019-08-26 11:53
阅读 2686·2019-08-26 11:46
阅读 1468·2019-08-26 10:56