ホームページ  >  記事  >  バックエンド開発  >  PHP画像のウォーターマークを追加、圧縮、カットするためのカプセル化クラス

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

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

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

写真を操作するには主に 4 つの手順があります:

  1. 写真を開く
  2. 写真を操作する
  3. 写真をエクスポートする
  4. 写真を破棄する

1,3,4の3ステップ毎回必要 書くときは毎回ほぼ同じです。本当に変更する必要があるのは、画像を操作するステップだけです。画像の操作は、多くの場合、1 つ以上の主要な GD 関数を通じて行われます。

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

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

他の操作が必要な場合は、このクラスに追加してください~~

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。