程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 【php學習】圖片操作

【php學習】圖片操作

編輯:PHP綜合

前兩天要對一張圖片進行處理,其實很簡單,就是加上幾句話,一個圖片而已,但是自己如同得了短暫性失憶似的,圖片操作的函數一個都想不起來。所以就抽空整理了一下圖片操作函數。

圖片處理三步走

  • 創建畫布
  • 圖像處理
  • 保存圖像並銷毀圖像

 

創建畫布

  從文件中創建一個新圖像

  • imagecreatefromgif($filename)
  • imagecreatefromjpeg($filename)
  • imagecreatefrompng($filename)

  上面幾個函數區別在於圖片是什麼格式的,知道了圖片的格式也就能選對正確的函數了。

     $type_arr = array(1=>'gif', 2=>'jpeg', 3=>'png');
     //獲取圖片信息
     list($width, $height, $type) = getimagesize($filename);
 
     //創建一個畫布
     $createFun = 'imagecreatefrom' . $type_arr[$type];
     $im = $createFun($f1);

 

圖片處理

  圖片處理的函數就是參數多,具體說明還是看文檔的比較好!

  • imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col )
  • imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )
  • imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )

 

保存圖片並銷毀圖片

     //保存圖片     $saveFun = 'image' . $type_arr[$type];
     $saveFun($dst, $f2);
     
     //銷毀圖片
     imagedestroy($im);    imagedestroy($dst);

 

第一步和第三步幾乎是固定的,拿來用就行了。

 

下面是自己寫的圖片處理函數

   //imgText('images/xiaoming.jpg', 'xiaoming');
     //imgWater('images/boluosha.jpg', 'images/water.png', 7);
     imgThumb('images/boluosha.jpg', 100, 100, 'images/thumb.jpg');
     
     function imgThumb($f1, $w, $h, $f2=''){
     $type_arr = array(1=>'gif', 2=>'jpeg', 3=>'png');
     //獲取圖片信息
     list($width, $height, $type) = getimagesize($f1);
 
     //創建一個畫布
     $createFun = 'imagecreatefrom' . $type_arr[$type];
     $im = $createFun($f1);
     $dst = imagecreatetruecolor($w, $h);
         
         //復制圖片
         imagecopyresampled($dst, $im, 0, 0, 0, 0, $w, $h, $width, $height);
         
     //保存圖片
     if(empty($f2)) $f2 = $f1;
     $saveFun = 'image' . $type_arr[$type];
     $saveFun($dst, $f2);
     
     //銷毀圖片
     imagedestroy($im);    imagedestroy($dst);
     }
     //在圖片上添加圖片
     //$coord表示坐標,1左上角2右上角3左下角4右下角5上下居中6左右居中7全居中
     function imgWater($f1, $f2, $coord=1, $f3=''){
         $type_arr = array(1=>'gif', 2=>'jpeg', 3=>'png');
         //獲取圖片信息
         list($w1, $h1, $t1) = getimagesize($f1);
         list($w2, $h2, $t2) = getimagesize($f2);
         //創建一個畫布
         $createFun = 'imagecreatefrom' . $type_arr[$t1];
         $im1 = $createFun($f1);
         $createFun = 'imagecreatefrom' . $type_arr[$t2];
         $im2 = $createFun($f2);
         
         //復制圖片到另一張圖片上
         $px = 0; $py=0;
         switch($coord){
             case 1 :break;
             case 2 : 
                 $px = $w1-$w2;
             break;
             case 3 :
                 $py = $h1-$h2;
             break;
             case 4:
                 $px = $w1-$w2;    $py=$h1-$h2;
             break;
             case 5:
                 $py=($h1-$h2)/2;
             break;
             case 6:
                 $px = ($w1-$w2)/2;
             break;
             case 7:
                 $px = ($w1-$w2)/2;    $py=($h1-$h2)/2;
             break;
         }
         imagecopy($im1, $im2, $px, $py, 0, 0, $w2, $h2);
         
         //保存圖片
         if(empty($f3)){
             $f3 = $f1;
         }
         $saveFun = 'image' . $type_arr[$t1];
         $saveFun($im1, $f3);
         
         //銷毀圖片
         imagedestroy($im1);    imagedestroy($im2);
     }
     
     //在圖片上添加文字/參數說明:文件路徑,字符串,顏色,位置x,位置y,字體1,2,3,4,5表示內置字體
     function imgText($filename, $string, $fc='#F00', $px=0, $py=0, $fs=5){
         $type_arr = array(1=>'gif', 2=>'jpeg', 3=>'png');
         //獲取圖片信息
         list($width, $height, $type) = getimagesize($filename);
 
         //創建一個畫布
         $createFun = 'imagecreatefrom' . $type_arr[$type];
         $im = $createFun($filename);
         
         //獲取顏色
         list($r, $g, $b) = rgbtodec($fc);
         $color = imagecolorallocate($im, $r, $g, $b);
         
         //計算位置(默認居中)
         if(empty($px) || empty($py)){
             $px = ($width-imagefontwidth($fs) * strlen($string))/2;
             $py = ($height-imagefontheight($fs))/2;
         }
         
         //寫入字符
         imagestring($im, $fs, $px, $py, $string, $color);
         
         //保存圖片
         $saveFun = 'image' . $type_arr[$type];
         $saveFun($im, $filename);
         
         //銷毀畫布
         imagedestroy($im);
         
     }
     //rgb值轉換十進制
     function rgbtodec($str){
         $str = str_replace('#', '', $str);
         if(strlen($str)>4){
             $r = substr($str, 0, 2);
             $g = substr($str, 2, 2);
             $b = substr($str, 4, 2);
         }else{
             $r = substr($str, 0, 1); $r .= $r;
             $g = substr($str, 1, 1); $g .= $g;
             $b = substr($str, 2, 1); $b .= $b;
         }
         return array(hexdec($r), hexdec($g), hexdec($b));
     }

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved