咱们常常能在图片上看到一些水印,通常分为图片、文字或者是两种一块儿的结合。那为何要加水印呢?目的是为了防止别人盗图、造假或者标注出处等,保护图片原做者的著做权或是劳动成果。那么给图片加水印就很是有必要了。php
怎么用PHP实现给图片加水印呢?html
先来看看效果web
使用GD库来实现效果
图像处理和 GD - 手册
正所谓授人以鱼不如授人以渔,光贴代码不讲实现过程的,都是耍流氓。因此下面我会写功能的实现过程、过程所须要用到的函数。浏览器
内容基本都是干货,须要用到的时候能够方便查阅资料
下面是php实现两种水印方式的关键函数:函数
准备两张图片字体
在php中加载这两张图片,获得一个图像资源数据类型。
根据不一样的图片格式,使用对应函数spa
它们甚至能够加载一张来自网上的图片
读取图片宽高。.net
可能你会须要将水印图进行缩小或放大(若是不须要,能够跳过这一步)
等比例缩放3d
拷贝部分图像并调整大小
imagecopyresized 拷贝部分图像并调整大小code
参数说明(为了方便理解,我对参数进行了语义化)
imagecopyresized(目标图像资源, 原图资源, 粘到目标图像的起始水平坐标, 粘到目标图像的起始垂直坐标, 拷贝原图的起始水平坐标, 拷贝原图的起始垂直坐标, 最终想要的宽度, 最终想要的高度, 原图的宽度, 原图的高度);
使用imagecopymerge
函数,拷贝水印图并合并到原图中。
简单分析形参都有哪些(为了方便理解,我对参数进行了语义化)
imagecopymerge(原图资源, 水印图资源, 水印水平坐标, 水印垂直坐标, 拷贝水印图的起始水平坐标, 拷贝水印图的起始垂直坐标, 要拷贝的宽度, 要拷贝的高度, 水印透明度);
输出图像
函数关键字image+图片格式
更多查看官方手册
...
若是要输出到浏览器中,须要设置content-type头部
释放图像资源
简单分析形参都有哪些(为了方便理解,我对参数进行了语义化)
imagettftext(图像资源, 文字尺寸, 文字角度, 文字水平坐标, 文字垂直坐标, 文字颜色, 字体, 文本文字)
GD库版本是1时,单位是像素(px),版本是2时,单位是点/磅(pt)
px,pt,em换算表
字符的左下角为基本点
颜色索引,经过imagecolorallocate函数建立
字体的绝对路径
其余参考
若是这对你有帮助,或者能帮你节省一些时间,不如,点个赞吧~