這里寫的是完成每個功能的函數,可以復制單個函數直接使用,這里的每個函數都是另外一篇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"); ?>