首页 > 开发 > PHP > 正文

常用的php图片处理类(水印、等比缩放、固定高宽)分享

2024-05-04 22:36:28
字体:
来源:转载
供稿:网友

常用的php图片处理类(水印、等比缩放、固定高宽)分享

<?php  //PHP 添加水印 & 比例缩略图 & 固定高度 & 固定宽度 类。 class Image_process{   public $source; //原图   public $source_width;  //原图宽度   public $source_height; //原图高度   public $source_type_id;   public $orign_name;   public $orign_dirname;       //传入原图路径   public function __construct($source){     $this->typeList = array(1=>'gif',2=>'jpg',3=>'png');     $ginfo = getimagesize($source);     $this->source_width = $ginfo[0];     $this->source_height = $ginfo[1];     $this->source_type_id = $ginfo[2];     $this->orign_url = $source;     $this->orign_name = basename($source);     $this->orign_dirname = dirname($source);   }       //判断图片的文件的格式,返回PHP可识别的编码   public function judgeType($type,$source){     if($type == 1){       return imagecreatefromgif($source); //gif     }else if($type == 2){       return imagecreatefromjpeg($source); //jpg     }else if($type == 3){       return imagecreatefrompng($source); //png     }else{       return false;     }   }       //生成水印图片   public function waterMakeImage($logo){     $linfo = getimagesize($logo);     $logo_width = $linfo[0];     $logo_height = $linfo[1];     $logo_type_id = $linfo[2];     $sourceHandle = $this->judgeType($this->source_type_id,$this->orign_url);     $logoHandle = $this->judgeType($logo_type_id,$logo);     if(!$sourceHandle || !$logoHandle){       return false;     }     $x = ($this->source_width - $logo_width)/2;     $y = ($this->source_height - $logo_height)/2;     imagecopy($sourceHandle,$logoHandle,$x,$y,0,0,$logo_width,$logo_height);     $newPic = $this->orign_dirname.'/water_'.time().'.'.$this->typeList[$this->source_type_id];     if($this->saveImage($sourceHandle,$newPic)){       imagedestroy($sourceHandle);       imagedestroy($logoHandle);     }   }       //固定高度宽度   public function fixSizeImage($width,$height){     if($width > $this->source_width) $this->source_width;     if($height > $this->source_height) $this->source_height;     if($width === false){       $width = floor($this->source_width / ($this->source_height / $height));     }     if($height === false){       $height = floor($this->source_height / ($this->source_width / $width));     }     $this->tinyImage($width,$height);   }       //等比例缩放图片   public function scaleImage($scale){     $width = floor($this->source_width * $scale);     $height = floor($this->source_height * $scale);     $this->tinyImage($width, $height);   }       //创建缩略图   public function tinyImage($width,$height){     $tinyImage = imagecreatetruecolor($width,$height);     $handle = $this->judgeType($this->source_type_id,$this->orign_url);     if(function_exists('imagecopyresampled')){       imagecopyresampled($tinyImage, $handle, 0, 0, 0, 0, $width, $height, $this->source_width, $this->source_height);     }else{       imagecopyresized($tinyImage, $handle, 0, 0, 0, 0, $width, $height, $this->source_width, $this->source_height);     }     $newPic = $this->orign_dirname.'/thumb_'.time().'_'.$width."_".$height.".".$this->typeList[$this->source_type_id];     if($this->saveImage($tinyImage,$newPic)){       imagedestroy($tinyImage);       imagedestroy($handle);     }   }   //保存图片   private function saveImage($image,$url){     if(imagejpeg($image,$url)){       return true;     }   } } $imgHandle = new Image_process('D:/AppServ/www/test/getimg/14061907445601.jpg'); //$imgHandle->waterMakeImage('D:/AppServ/www/test/getimg/shougongke.png');  //生成水印图片 //$imgHandle->fixSizeImage(200,150); //固定长度图片 $imgHandle->scaleImage(0.2); //等比例缩放 ?>            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表