PHP 图片添加图像水印类

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>

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程