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': //如果后缀为gif
               $img =imagecreatefromgif($imageUrl);    //则根据路径创建一个GIF 图像
                 break;
          case '.jpg': //如果后缀为jpg
               $img =imagecreatefromjpeg($imageUrl);   //则根据路径创建一个JPG 图像
                  break;
          case '.png':
               $img =imagecreatefrompng($imageUrl);
                  break;
        }
        return $img; //返回创建图像的标识
     }
     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>
赞(0)
未经允许不得转载:极客笔记 » PHP 图片添加图像水印类
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址