PHP供应的GD库是专门用来处理图像的,在利用之前首先要启用GD库,打开php.ini文件,如下图所示:
去掉前面的’;’号,启用GD库。
其余,水印在目标图片上的位置跟坐标值有关,这里的坐标差异于数学中的坐标体系,图片的左上角为原点,向下为y轴正方向,向右为x轴正方向,如下所示:

给图片添加水印实际上是将水印图片与目标图合并成一张图片,步骤如下:
1、准备水印图片( logo.png )和要添加水印的目标图片( tim.jpg );
2、从字符串中的图像流新建一图像
3、获打水印图片的宽高
4、将水印图片与目标图片合并成一张图片,这里利用imagecopy:
这里阐明一下imagecopy函数中8个参数的含义:
$img:为目标文件,即要添加水印的图片;
$logo:为水印图片;
10:目标图片的x轴坐标;
50:目标图片的y轴坐标;
0:从水印图片的x轴坐标0开始;
0:从水印图片的y轴坐标0开始;
$logo_x:宽度为水印图片本身的宽度;
$logo_y:高度为水印图片本身的高度;
连起来的含义为:将 $logo 图像中坐标从 0,0 开始,宽度为 $logo_x,高度为 $logo_y 的一部分拷贝到 $img图像中坐标为 10 和 50 的位置上。
5、输出文件:
如下所示:
可见,logo已经被添加在目标图片上。
6、销毁图像开释内存
但是这里存在问题:
1、目标图片的格式不愿定,即我们须要动态获取图片的格式;
2、水印图片不是透明的,须要使水印透明;
办理方法:
1、对付第一个问题,我们可以利用getimagesize返回值中的图像类型标记来确定图像的格式:
Getimagesize函数返回一个具有四个单元的数组:
① 索引 0 包含图像宽度的像素值;
② 索引 1 包含图像高度的像素值;
③ 索引 2 是图像类型的标记:1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM;
④ 索引 3 是文本字符串:内容为“width=\公众yyy\公众 height=\"大众xxx\"大众”,可直接用于普通 HTML 文件中 IMG 标记中的 height/width 文本字符串。
在获取到图像的类型标记后,可以利用image_type_to_extension函数进一步获取图像的后缀,如下:
修正输出图片代码如下:
2、对付第二个问题则比较大略,在合并两个图像的时候,利用imagecopymerge函数,该函数比imagecopy函数多一个参数,可对真彩色图像实现了 alpha 透明,如下:
末了一个值60即透明度,取值范围0-100,0为完备透明,100为不透明。
附上完全的代码:
以上仅仅是供应一种思路,实际运用的时候,须要进一步拓展;喜好的朋友,可以收藏或关注,感激大家。