PHP 图片添加图像水印类——封装添加图像水印方法,在上面的AddWaterPress类中封装的是文字水印类的添加方法,这里介绍一个图像水印的添加方法。使用图片来作为水印,前提是这个图片的背景必须是透明的,否则输出的效果很不理想。图片水印添加的关键是getimagesize()和imagecopy()函数。应用getimagesize()函数获取上传图片和水印图片的大小,通过imagecopy()函数完成图片水印的添加。这里将方法封装到AddPictureWaterPress类中。
PHP 图片添加图像水印类 语法
/*********************************************
* @ 说明:图片添加图像水印类
*******************************/
class AddPictureWaterPress{ //定义类文件
function getExtendsName(fileName){ //获取上传图片后缀
return strtolower(strstr(fileName, ".")); //返回图片后缀
}
function getImageRes(extendsName,imageUrl){
//根据上传图片的后缀和上传文件的路径新建图像
switch(extendsName){ //根据上传图片的后缀进行判断
case '.gif': //如果后缀为gifimg =imagecreatefromgif(imageUrl); //则根据路径创建一个GIF 图像
break;
case '.jpg': //如果后缀为jpgimg =imagecreatefromjpeg(imageUrl); //则根据路径创建一个JPG 图像
break;
case '.png':img =imagecreatefrompng(imageUrl);
break;
}
returnimg; //返回创建图像的标识
}
function add(imageUrl,watherImageUrl, x,y){ //定义添加方法
img = @this->getImageRes(this->getExtendsName(imageUrl), imageUrl);
//获取添加的图像标识img1 = @this->getImageRes(this->getExtendsName(watherImageUrl),watherImageUrl); //获取指定的水印图片的图像标识
size = getimagesize(imageUrl); //获取图像大小
size1 = getimagesize(watherImageUrl);//获取水印图片的大小
if(x==null &&y==null){ //判断参数是否为空
x1 = (size[0]-size1[0])/2; //根据图像大小数组中返回的值,计算图像的横坐标y1 = (size[1]-size1[1])/2; //根据图像大小数组中返回的值,计算图像的纵坐标
}else{
x1 =x; //如果不为空,则直接使用坐标数据
y1 =y; //如果不为空,则直接使用坐标数据
}
imagecopy(img,img1, x1,y1, 0, 0, size1[0],size1[1]);
//将img1 的一部分复制到img 的指定位置
//根据图像标识符、后缀和路径,执行outputImage 方法,输出图像
this->outputImage(img, this->getExtendsName(imageUrl), imageUrl);
imagedestroy(img1); //销毁图像
imagedestroy(img); //销毁图像
}
function outputImage(img, extendsName,imageUrl){
//根据图像标识、图片后缀和路径输出图像
switch(extendsName){ //判断图像后缀
case '.gif': //如果后缀为gif,则输出img 图像
imagegif(img, imageUrl);
break;
case '.jpg':
imagejpeg(img, imageUrl);
break;
case '.png':
imagepng(img, $imageUrl);
break;
}
}
}
PHP 图片添加图像水印类 示例
在本实例中介绍如何为上传图片添加一个图像水印。
本实例的实现步骤与上一实例相同,唯一区别是创建AddPictureWaterPress.php文件,编写AddPictureWaterPress类的add()方法时,应用的是getimagesize()和imagecopy()函数完成图像水印的添加操作。有关Add()方法的代码请参考语法,这里不再赘述。下面给出图片上传时使用的表单代码。其代码如下:
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']?>" enctype=
"multipart/form-data">
<span class="STYLE1">上传图片:</span>
<input type="file" name="file" class="input">
<input type="hidden" name="flag" value="1">
<input type="image" name="imageField" src="images/sc.jpg" />
</form>