首頁  >  文章  >  後端開發  >  php圖片檔案操作封裝類

php圖片檔案操作封裝類

墨辰丷
墨辰丷原創
2018-06-07 13:49:291503瀏覽

這篇文章主要介紹php圖片檔案操作封裝類,有興趣的朋友參考下,希望對大家有幫助。

php對圖片檔案的操作主要是利用GD庫擴充。當我們經常利用php對圖片進行操作時,會自然封裝很多函數,否則會寫太多重複的程式碼。當有很多對圖片的相關函數的時候,我們可以考慮將這些函數也整理一下,因而有了封裝成類別的想法。
操作圖片主要歷經四個步驟
1、開啟圖片
2、操作圖片
3、輸出圖片
4、銷毀圖片
1,3,4三個步驟每次都要寫,每次又都差不多。真正需要變通的只有操作圖片的這一步驟了。操作圖片又往往透過1或多個主要的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[&#39;2&#39;],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[&#39;0&#39;], $col[&#39;1&#39;], $col[&#39;2&#39;],$col[&#39;3&#39;]);

    imagettftext($this->image, $size, $angle, $location[&#39;0&#39;], $location[&#39;1&#39;], $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[&#39;2&#39;],false);
    $func2="imagecreatefrom".$type;
    $water=$func2($imageMark);

    imagecopymerge($this->image, $water, $dst[0], $dst[1], 0, 0, $info2[&#39;0&#39;], $info2[&#39;1&#39;], $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[&#39;0&#39;], $this->info[&#39;1&#39;]);
    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[&#39;mime&#39;]);

    $funn="image".$this->type;

    $funn($this->image);
  }
  /**
   * 保存图片
 * @param [type] $newname 新图片名
 * @return [type]     [description]
 */
   public function save($newname){
     header("content-type:".$this->info[&#39;mime&#39;]);

     $funn="image".$this->type;

     $funn($this->image,$newname.&#39;.&#39;.$this->type);
   }
   public function __destruct(){
     imagedestroy($this->image);
   }

 }

 ?>

總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。

相關推薦:

php實作支援中文的檔案下載

PHP下Mongodb 連線遠端資料庫詳解及案例

PHP文字轉圖片功能的原理

以上是php圖片檔案操作封裝類的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn