您的位置:首页 - 教程 - 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));
     }

 

 

 


评论: