PHP 添加水印 & 比例缩略图 & 固定高度 & 固定宽度 类。

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
<?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); //等比例缩放  
?> 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:NSString-计算文本的宽度和高度

下一篇:C# 两个目录同步的代码