>  기사  >  백엔드 개발  >  php图片水印平添,压缩,剪切的封装类

php图片水印平添,压缩,剪切的封装类

WBOY
WBOY원래의
2016-06-13 12:23:47871검색

php图片水印添加,压缩,剪切的封装类

  php对图片文件的操作主要是利用GD库扩展。当我们频繁利用php对图片进行操作时,会自然封装很多函数,否则会写太多重复的代码。当有很多对图片的相关函数的时候,我们可以考虑将这些函数也整理一下,因而就有了封装成类的想法。

  操作图片主要历经四个步骤:

  1. 打开图片
  2. 操作图片
  3. 输出图片
  4. 销毁图片

  1,3,4三个步骤每次都要写,每次又都差不多。真正需要变通的只有操作图片的这一步骤了。操作图片又往往通过1或多个主要的GD函数来完成。

  本文封装类里面的四种方法,文字水印(imagettftext()),图片水印(imagecopymerge()),图片压缩,图片剪切(imagecopyresampled()),其余的常用GD函数便不赘述。直接上代码:

<span style="color: #000000;">php </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Image{        </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> $info;    </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> $image;    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> $type;    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> function __construct($src)    {        $</span><span style="color: #0000ff;">this</span>->info=<span style="color: #000000;">getimagesize($src);        $</span><span style="color: #0000ff;">this</span>->type=image_type_to_extension($<span style="color: #0000ff;">this</span>->info[<span style="color: #800000;">'</span><span style="color: #800000;">2</span><span style="color: #800000;">'</span>],<span style="color: #0000ff;">false</span><span style="color: #000000;">);        $fun</span>=<span style="color: #800000;">"</span><span style="color: #800000;">imagecreatefrom{$this->type}</span><span style="color: #800000;">"</span><span style="color: #000000;">;        $</span><span style="color: #0000ff;">this</span>->image=<span style="color: #000000;">$fun($src);    }    </span><span style="color: #008000;">/*</span><span style="color: #008000;">*     * 文字水印     * @param  [type]  $font     字体     * @param  [type]  $content  内容     * @param  [type]  $size     文字大小     * @param  [type]  $col      文字颜色(四元数组)     * @param  array   $location 位置      * @param  integer $angle    倾斜角度     * @return [type]                </span><span style="color: #008000;">*/</span>    <span style="color: #0000ff;">public</span> function fontMark($font,$content,$size,$col,$location,$angle=<span style="color: #800080;">0</span><span style="color: #000000;">){        $col</span>=imagecolorallocatealpha($<span style="color: #0000ff;">this</span>->image, $col[<span style="color: #800000;">'</span><span style="color: #800000;">0</span><span style="color: #800000;">'</span>], $col[<span style="color: #800000;">'</span><span style="color: #800000;">1</span><span style="color: #800000;">'</span>], $col[<span style="color: #800000;">'</span><span style="color: #800000;">2</span><span style="color: #800000;">'</span>],$col[<span style="color: #800000;">'</span><span style="color: #800000;">3</span><span style="color: #800000;">'</span><span style="color: #000000;">]);        imagettftext($</span><span style="color: #0000ff;">this</span>->image, $size, $angle, $location[<span style="color: #800000;">'</span><span style="color: #800000;">0</span><span style="color: #800000;">'</span>], $location[<span style="color: #800000;">'</span><span style="color: #800000;">1</span><span style="color: #800000;">'</span><span style="color: #000000;">], $col,$font,$content);    }        </span><span style="color: #008000;">/*</span><span style="color: #008000;">*     * 图片水印     * @param  [type] $imageMark 水印图片地址     * @param  [type] $dst       水印图片在原图片中的位置     * @param  [type] $pct       透明度     * @return [type]                 </span><span style="color: #008000;">*/</span>    <span style="color: #0000ff;">public</span><span style="color: #000000;"> function imageMark($imageMark,$dst,$pct){        $info2</span>=<span style="color: #000000;">getimagesize($imageMark);        $type</span>=image_type_to_extension($info2[<span style="color: #800000;">'</span><span style="color: #800000;">2</span><span style="color: #800000;">'</span>],<span style="color: #0000ff;">false</span><span style="color: #000000;">);        $func2</span>=<span style="color: #800000;">"</span><span style="color: #800000;">imagecreatefrom</span><span style="color: #800000;">"</span><span style="color: #000000;">.$type;        $water</span>=<span style="color: #000000;">$func2($imageMark);        imagecopymerge($</span><span style="color: #0000ff;">this</span>->image, $water, $dst[<span style="color: #800080;">0</span>], $dst[<span style="color: #800080;">1</span>], <span style="color: #800080;">0</span>, <span style="color: #800080;">0</span>, $info2[<span style="color: #800000;">'</span><span style="color: #800000;">0</span><span style="color: #800000;">'</span>], $info2[<span style="color: #800000;">'</span><span style="color: #800000;">1</span><span style="color: #800000;">'</span><span style="color: #000000;">], $pct);        imagedestroy($water);    }    </span><span style="color: #008000;">/*</span><span style="color: #008000;">*     * 压缩图片     * @param  [type] $thumbSize 压缩图片大小     * @return [type]            [description]     </span><span style="color: #008000;">*/</span>    <span style="color: #0000ff;">public</span><span style="color: #000000;"> function thumb($thumbSize){        $imageThumb</span>=imagecreatetruecolor($thumbSize[<span style="color: #800080;">0</span>], $thumbSize[<span style="color: #800080;">1</span><span style="color: #000000;">]);                imagecopyresampled($imageThumb, $</span><span style="color: #0000ff;">this</span>->image, <span style="color: #800080;">0</span>, <span style="color: #800080;">0</span>, <span style="color: #800080;">0</span>, <span style="color: #800080;">0</span>, $thumbSize[<span style="color: #800080;">0</span>], $thumbSize[<span style="color: #800080;">1</span>], $<span style="color: #0000ff;">this</span>->info[<span style="color: #800000;">'</span><span style="color: #800000;">0</span><span style="color: #800000;">'</span>], $<span style="color: #0000ff;">this</span>->info[<span style="color: #800000;">'</span><span style="color: #800000;">1</span><span style="color: #800000;">'</span><span style="color: #000000;">]);        imagedestroy($</span><span style="color: #0000ff;">this</span>-><span style="color: #000000;">image);        $</span><span style="color: #0000ff;">this</span>->image=<span style="color: #000000;">$imageThumb;    }    </span><span style="color: #008000;">/*</span><span style="color: #008000;">*    * 裁剪图片     * @param  [type] $cutSize  裁剪大小     * @param  [type] $location 裁剪位置     * @return [type]           [description]     </span><span style="color: #008000;">*/</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function cut($cutSize,$location){         $imageCut</span>=imagecreatetruecolor($cutSize[<span style="color: #800080;">0</span>],$cutSize[<span style="color: #800080;">1</span><span style="color: #000000;">]);         imagecopyresampled($imageCut, $</span><span style="color: #0000ff;">this</span>->image, <span style="color: #800080;">0</span>, <span style="color: #800080;">0</span>, $location[<span style="color: #800080;">0</span>], $location[<span style="color: #800080;">1</span>],$cutSize[<span style="color: #800080;">0</span>],$cutSize[<span style="color: #800080;">1</span>],$cutSize[<span style="color: #800080;">0</span>],$cutSize[<span style="color: #800080;">1</span><span style="color: #000000;">]);         imagedestroy($</span><span style="color: #0000ff;">this</span>-><span style="color: #000000;">image);         $</span><span style="color: #0000ff;">this</span>->image=<span style="color: #000000;">$imageCut;     }    </span><span style="color: #008000;">/*</span><span style="color: #008000;">*     * 展现图片     * @return [type] [description]     </span><span style="color: #008000;">*/</span>    <span style="color: #0000ff;">public</span><span style="color: #000000;"> function show(){        header(</span><span style="color: #800000;">"</span><span style="color: #800000;">content-type:</span><span style="color: #800000;">"</span>.$<span style="color: #0000ff;">this</span>->info[<span style="color: #800000;">'</span><span style="color: #800000;">mime</span><span style="color: #800000;">'</span><span style="color: #000000;">]);        $funn</span>=<span style="color: #800000;">"</span><span style="color: #800000;">image</span><span style="color: #800000;">"</span>.$<span style="color: #0000ff;">this</span>-><span style="color: #000000;">type;        $funn($</span><span style="color: #0000ff;">this</span>-><span style="color: #000000;">image);    }    </span><span style="color: #008000;">/*</span><span style="color: #008000;">*     * 保存图片 * @param  [type] $newname 新图片名 * @return [type]          [description] </span><span style="color: #008000;">*/</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function save($newname){         header(</span><span style="color: #800000;">"</span><span style="color: #800000;">content-type:</span><span style="color: #800000;">"</span>.$<span style="color: #0000ff;">this</span>->info[<span style="color: #800000;">'</span><span style="color: #800000;">mime</span><span style="color: #800000;">'</span><span style="color: #000000;">]);         $funn</span>=<span style="color: #800000;">"</span><span style="color: #800000;">image</span><span style="color: #800000;">"</span>.$<span style="color: #0000ff;">this</span>-><span style="color: #000000;">type;         $funn($</span><span style="color: #0000ff;">this</span>->image,$newname.<span style="color: #800000;">'</span><span style="color: #800000;">.</span><span style="color: #800000;">'</span>.$<span style="color: #0000ff;">this</span>-><span style="color: #000000;">type);     }     </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> function __destruct(){         imagedestroy($</span><span style="color: #0000ff;">this</span>-><span style="color: #000000;">image);     } } </span>?>

  如果还需要其他操作,只需要再往这个类里面添加就好啦~~

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.