PHP利用GD庫處理圖片方法實現

來源:互聯網
上載者:User

標籤:head   旋轉   font   cut   width   .com   null   logs   添加圖片   

這裡寫的是完成每個功能的函數,可以複製單個函數直接使用,這裡的每個函數都是另外一篇PHP常用類------圖片處理類Image當中的方法進行細化,可以參考一下

廢話不多說,直接付代碼吧!

添加浮水印(文字和圖片)

<?php /** * [建立圖片文字浮水印] * @param  [string] $imagename [需要添加浮水印的值] * @param  [string] $string    [圖片上添加的文字] * @param  [string] $locate    [浮水印位置,center,left_buttom,right_buttom三選一] * @return [null]            [description] */function create_words_watermark($imagename,$string,$locate){list($width,$height,$type)=getimagesize($imagename);$types=array(1 => "GIF",2 => "JPEG",3 => "PNG",4 => "SWF",5 => "PSD",6 => "BMP",7 => "TIFF",8 => "TIFF",9 => "JPC",10 => "JP2",11 => "JPX",12 => "JB2",13 => "SWC",14 => "IFF",15 => "WBMP",16 => "XBM");$type=strtolower($types[$type]);$create="imagecreatefrom".$type;$img=$create($imagename);$string_color=imagecolorallocate($img,200, 200, 200);$fontsize=4;// 圖片的寬和高也可用下面兩個函數獲得// $width=imagesx($img);// $height=imagesy($img);switch($locate){case ‘center‘:$x=($width-imagefontwidth($fontsize)*strlen($string))/2;$y=($height-imagefontheight($fontsize))/2;break;case ‘left_buttom‘:$x=5;$y=($height-imagefontheight($fontsize)-3);break;case ‘right_buttom‘:$x=($width-imagefontwidth($fontsize)*strlen($string)-3);$y=($height-imagefontheight($fontsize)-3); break; default: die("未指定浮水印位置!"); break; } imagestring($img,$fontsize,$x,$y,$string,$string_color);imagestring($img,$fontsize,$x+1,$y+1,$string,$string_color);$save="image".$type;//儲存//$save($img,"new_".$imagename);//顯示header("content-type:image/".$type);$save($img);imagedestroy($img);}// create_words_watermark("test.png","hello world","right_buttom");/** * [create_pic_watermark 添加圖片浮水印] * @param  [string] $dest_image [需要添加圖片浮水印的圖片名] * @param  [string] $watermark  [浮水印圖片名] * @param  [string] $locate     [浮水印位置,center,left_buttom,right_buttom三選一] * @return [type]             [description] */function create_pic_watermark($dest_image,$watermark,$locate){list($dwidth,$dheight,$dtype)=getimagesize($dest_image);list($wwidth,$wheight,$wtype)=getimagesize($watermark);$types=array(1 => "GIF",2 => "JPEG",3 => "PNG",4 => "SWF",5 => "PSD",6 => "BMP",7 => "TIFF",8 => "TIFF",9 => "JPC",10 => "JP2",11 => "JPX",12 => "JB2",13 => "SWC",14 => "IFF",15 => "WBMP",16 => "XBM");$dtype=strtolower($types[$dtype]);//原圖類型$wtype=strtolower($types[$wtype]);//浮水印圖片類型$created="imagecreatefrom".$dtype;$createw="imagecreatefrom".$wtype;$imgd=$created($dest_image);$imgw=$createw($watermark);switch($locate){case ‘center‘:$x=($dwidth-$wwidth)/2;$y=($dheight-$wheight)/2;break;case ‘left_buttom‘:$x=1;$y=($dheight-$wheight-2);break;case ‘right_buttom‘:$x=($dwidth-$wwidth-1);$y=($dheight-$wheight-2); break; default: die("未指定浮水印位置!"); break; } imagecopy($imgd,$imgw,$x,$y,0,0, $wwidth,$wheight); $save="image".$dtype; //顯示 header("content-type:image/".$dtype); $save($imgd); imagedestroy($imgw); imagedestroy($imgd);}create_pic_watermark("ganlixin.jpg","test.png","left_buttom");?>

 

剪下圖片

<?php /** * [cut_image]從原圖中剪下一部分 * @param  [string] $old_imagename [需要剪下的圖片名] * @param  [int] $start_width   [從原圖片寬為的$start_width開始剪下] * @param  [int] $start_height  [從原圖片高為的$start_height開始剪下] * @param  [int] $new_width     [從原圖片中剪下$new_width的寬度] * @param  [int] $new_height    [從原圖片中剪下$new_height的高度] * @return [null]                [null] */function cut_image($old_imagename,$start_width,$start_height,$new_width,$new_height){list($old_width,$old_height,$type)=getimagesize($old_imagename);$types=array(1 => "GIF",2 => "JPEG",3 => "PNG",4 => "SWF",5 => "PSD",6 => "BMP",7 => "TIFF",8 => "TIFF",9 => "JPC",10 => "JP2",11 => "JPX",12 => "JB2",13 => "SWC",14 => "IFF",15 => "WBMP",16 => "XBM");$type=strtolower($types[$type]);$create="imagecreatefrom".$type;$old_img=$create($old_imagename);$new_img=imagecreatetruecolor($new_width, $new_height);imagecopyresampled($new_img,$old_img,0,0,$start_width,$start_height,$new_width,$new_height,$new_width,$new_height);$save="image".$type;//儲存//$save($new_img,"new_".$old_imagename);//顯示header("content-type:image/".$type);$save($new_img);//銷毀imagedestroy($old_img);imagedestroy($new_img);}cut_image("ganlixin.jpg",0,0,200,200);?>

  

翻轉圖片

<?php /** * [rotate_image 圖片旋轉] * @param  [string] $imagename [要進行旋轉的圖片名] * @param  [string] $angle     [旋轉的角度,逆時針為正] * @return [null]            [description] */function rotate_image($imagename,$angle){list($width,$height,$type)=getimagesize($imagename);$types=array(1 => "GIF",2 => "JPEG",3 => "PNG",4 => "SWF",5 => "PSD",6 => "BMP",7 => "TIFF",8 => "TIFF",9 => "JPC",10 => "JP2",11 => "JPX",12 => "JB2",13 => "SWC",14 => "IFF",15 => "WBMP",16 => "XBM");$type=$types[$type];$create="imagecreatefrom".$type;$img=$create($imagename);$new_img=imagerotate($img,$angle,0);$save="image".$type;//顯示header("content-type:image/".$type);$save($new_img);// 儲存// $save($new_img,"new_".$imagename);imagedestroy($img);imagedestroy($new_img);} rotate_image("ganlixin.jpg",-90);?>

  

翻轉圖片

<?php /** * [overturn_image 翻轉圖片] * @param  [string] $imagename [要反轉的圖片名] * @param  [char] $method    [按x軸或y軸翻轉,只有x,y選項] * @return [type]            [description] */function overturn_image($imagename,$method){$method=strtolower($method);list($width,$height,$type)=getimagesize($imagename);$types=array(1 => "GIF",2 => "JPEG",3 => "PNG",4 => "SWF",5 => "PSD",6 => "BMP",7 => "TIFF",8 => "TIFF",9 => "JPC",10 => "JP2",11 => "JPX",12 => "JB2",13 => "SWC",14 => "IFF",15 => "WBMP",16 => "XBM");$type=$types[$type];$create="imagecreatefrom".$type;$img=$create($imagename);//源圖片$new_img=imagecreatetruecolor($width,$height);//翻轉之後的圖片if($method==‘y‘){for($i=0;$i<$width;$i++){imagecopy($new_img,$img,$width-$i-1,0,$i,0,1,$height);}} else if($method==‘x‘){for($i=0;$i<$height;$i++){imagecopy($new_img,$img,0,$height-$i-1,0,$i,$width,1);}}$save="image".$type;//顯示header("content-type:image/".$type);$save($new_img);// 儲存// $save($new_img,"new_".$imagename);imagedestroy($img);imagedestroy($new_img);}overturn_image("ganlixin.jpg","y");?>

  

PHP利用GD庫處理圖片方法實現

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.