ホームページ  >  記事  >  バックエンド開発  >  PHP画像透かしの追加、圧縮、カットのカプセル化クラス

PHP画像透かしの追加、圧縮、カットのカプセル化クラス

WBOY
WBOYオリジナル
2016-06-13 12:23:47871ブラウズ

画像のウォーターマークを追加、圧縮、切り取るための PHP カプセル化クラス

PHP は主に GD ライブラリ拡張子を使用して画像ファイルを操作します。画像を操作するために PHP を頻繁に使用する場合、必然的に多くの関数をカプセル化することになります。そうしないと、反復的なコードが多すぎます。画像に関する機能が多い場合、それらの機能を整理することも考えられるので、クラスにカプセル化するという考え方があります。

画像を操作するには、主に 4 つの手順があります:

  1. 画像を開く
  2. 画像を操作する
  3. 写真の出力
  4. 写真の破棄

3つのステップ1、3、4は毎回書かなければなりません。そしてほぼ毎回。本当に変更する必要がある唯一のステップは、画像操作ステップです。画像の操作は、多くの場合、1 つ以上の主要な GD 関数を通じて行われます。

この記事のカプセル化クラスの 4 つのメソッドは、テキスト ウォーターマーク (imagettftext())、画像ウォーターマーク (imagecopymerge())、画像圧縮、および画像切り取り (imagecopyresampled()) の残りの一般的に使用されるメソッドです。関数はリピートではありません。コードを直接入力します:

<?<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 までご連絡ください。