PHP 新增浮水印 & 比例縮圖 & 固定高度 & 固定寬度 類別。 使用foreach 迴圈處理的時候,需要 sleep 設定一個時間 或 依照處理後的回傳值 ,否則處理不完。
下載: http://pan.baidu.com/s/1ntKAfFF
- //檔名:image_process.class.php
-
class Image_process{
- public $source;//原圖
- public $> public $ source_width;//寬
- public $source_height;//高
- public $source_type_id;
- public $orign_name;
- public $orign_dirname;
- //傳入圖片路徑
- public $orign_dirname;
- //傳入圖片路徑
- public $orign_dirname;
- //傳入圖片路徑 $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 watermarkImage($logo){ $dinfo getimagesize($logo);
- $logo_width = $linfo[0];
- $logo_height = $linfo[1];
- $logo_type_id = $linfo[2];
- $sourceHandle = $thissource_id = $linfo[2];
- $sourceHandle = $thissourceHandle ->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;
- $y = $this->source_height- $logo_height-
-
-
- ImageCopy($sourceHandle,$logoHandle,$x,$y,0,0,$logo_width,$logo_width) or die("fail to combine");
- $newPic = $this->orign_dirname .'water_'. time().'.'. $this->typeList[$this->source_type_id];
-
- if( $this->saveImage($sourceHandle,$newPic)){
- imagedestroy($sourceHandle );
- imagedestroy($logoHandle);
- }
- }
-
- // fix 寬度
- // height = true 固頂高度
- // width = true 固頂寬度
- public function fixSizeImage($width,$height){
- if( $width > $this->source_width) $this->source_width;
- if( $height > $this->source_height ) $source_height ) $source_height ) $source_height ) $source_height ) $source 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);
- }
-
- //比例縮放
- // $scale 縮放比例
- public function scaleImage($scale){
- $width = floor($ this->source_width * $scale);
- $height = floor($this->source_height * $scale);
- $this->tinyImage($width,$height);
- }
-
- //建立略縮圖
- private function tinyImage($width,$height){
- $tinyImage = imagecreatetruecolor($width, $height );
- $handle = $this->jType( $this->source_type_id,$this->orign_url);
- if(function_exists('imagecopyresampled')){
- imagecopyresampled($tinyImage,$handle,0,0,0,0,$he,$height ,$this->source_width,$this->source_height);
- }else{
- imagecopyresized($tinyImage,$handle,0,0,0,0,$width,$height,$this->source_width ,$this->source_height);
- }
-
- $newPic = time().'_'.$width.'_'.$height.'.'. $this->typeList[$ this->source_type_id];
- $newPic = $this->orign_dirname .'thumb_'. $newPic;
- if( $this->saveImage($tinyImage,$newPic)){
- imagedeystro($ tinyImage);
- imagedestroy($handle);
- }
- }
-
- //儲存圖片
- private function saveImage($image,$url){
- private function saveImage($image,$url){
if; ($image,$url)){ return true; } } }複製程式碼
- //使用
- include('image_process.class.php');
- $m = array(
- ' D:myspacetestimage_process1.jpg',
- 'D:myspacetestimage_process2.jpg',
- 'D:myspacetestimage_process2.jpg',
- 'D:myspacetestimage_process3.jpg',
- 'D:myspacetestimage_process4.m'$logo = 'D:myspacetestimage_processlogo.png';
- foreach( $m as $item){
- $s = new Image_process( $item ) ;
- $s->watermarkImage($logo);
- $s->scaleImage(0.8);
- $s->fixSizeImage(200,false);
- sleep(1) ;
- ;
- }
-
複製程式碼
|