PHP 添加水印 & 比例縮略圖 & 固定高度 & 固定寬度 類。

mmxn 9年前發布 | 1K 次閱讀 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); //等比例縮放
?> </pre>

 本文由用戶 mmxn 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!