首页 > 开发 > PHP > 正文

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

2024-05-04 23:38:59
字体:
来源:转载
供稿:网友
这篇文章主要介绍了php图片水印添加,压缩,剪切的封装类实现方法,需要的朋友可以参考下
 

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

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

  1. <?php  
  2.  
  3. class Image 
  4. {   
  5.   private $info
  6.  
  7.   private $image
  8.   public $type
  9.   public function __construct($src
  10.   { 
  11.  
  12.     $this->info=getimagesize($src); 
  13.     $this->type=image_type_to_extension($this->info['2'],false); 
  14.     $fun="imagecreatefrom{$this->type}"
  15.     $this->image=$fun($src); 
  16.   } 
  17.   /** 
  18.    * 文字水印 
  19.    * @param [type] $font   字体 
  20.    * @param [type] $content 内容 
  21.    * @param [type] $size   文字大小 
  22.    * @param [type] $col   文字颜色(四元数组) 
  23.    * @param array  $location 位置  
  24.    * @param integer $angle  倾斜角度 
  25.    * @return [type]       
  26.    */ 
  27.   public function fontMark($font,$content,$size,$col,$location,$angle=0){ 
  28.     $col=imagecolorallocatealpha($this->image, $col['0'], $col['1'], $col['2'],$col['3']); 
  29.  
  30.     imagettftext($this->image, $size$angle$location['0'], $location['1'], $col,$font,$content); 
  31.   } 
  32.    
  33.   /** 
  34.    * 图片水印 
  35.    * @param [type] $imageMark 水印图片地址 
  36.    * @param [type] $dst    水印图片在原图片中的位置 
  37.    * @param [type] $pct    透明度 
  38.    * @return [type]       
  39.    */ 
  40.   public function imageMark($imageMark,$dst,$pct){ 
  41.     $info2=getimagesize($imageMark); 
  42.     $type=image_type_to_extension($info2['2'],false); 
  43.     $func2="imagecreatefrom".$type
  44.     $water=$func2($imageMark); 
  45.  
  46.     imagecopymerge($this->image, $water$dst[0], $dst[1], 0, 0, $info2['0'], $info2['1'], $pct); 
  47.     imagedestroy($water); 
  48.  
  49.   } 
  50.   /** 
  51.    * 压缩图片 
  52.    * @param [type] $thumbSize 压缩图片大小 
  53.    * @return [type]      [description] 
  54.    */ 
  55.   public function thumb($thumbSize){ 
  56.     $imageThumb=imagecreatetruecolor($thumbSize[0], $thumbSize[1]); 
  57.      
  58.     imagecopyresampled($imageThumb$this->image, 0, 0, 0, 0, $thumbSize[0], $thumbSize[1], $this->info['0'], $this->info['1']); 
  59.     imagedestroy($this->image); 
  60.     $this->image=$imageThumb
  61.   } 
  62.   /** 
  63.   * 裁剪图片 
  64.    * @param [type] $cutSize 裁剪大小 
  65.    * @param [type] $location 裁剪位置 
  66.    * @return [type]      [description] 
  67.    */ 
  68.    public function cut($cutSize,$location){ 
  69.      $imageCut=imagecreatetruecolor($cutSize[0],$cutSize[1]); 
  70.  
  71.      imagecopyresampled($imageCut$this->image, 0, 0, $location[0], $location[1],$cutSize[0],$cutSize[1],$cutSize[0],$cutSize[1]); 
  72.      imagedestroy($this->image); 
  73.      $this->image=$imageCut
  74.    } 
  75.   /** 
  76.    * 展现图片 
  77.    * @return [type] [description] 
  78.    */ 
  79.   public function show(){ 
  80.     header("content-type:".$this->info['mime']); 
  81.  
  82.     $funn="image".$this->type; 
  83.  
  84.     $funn($this->image); 
  85.   } 
  86.   /** 
  87.    * 保存图片 
  88.  * @param [type] $newname 新图片名 
  89.  * @return [type]     [description] 
  90.  */ 
  91.    public function save($newname){ 
  92.      header("content-type:".$this->info['mime']); 
  93.  
  94.      $funn="image".$this->type; 
  95.  
  96.      $funn($this->image,$newname.'.'.$this->type); 
  97.    } 
  98.    public function __destruct(){ 
  99.      imagedestroy($this->image); 
  100.    } 
  101.  
  102.  } 
  103.  
  104.  ?> 
?
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表