当前位置:首页 > PHP教程 > php图像处理 > 列表

php 上传图片并按比例生成指定大小图

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-19 15:07:06 浏览: 评论:0 

这是一款图象缩略函数,把上传的新图片给$srcfile然后进行文件按$thumbwidth 缩小图宽最大尺寸与$thumbheitht 缩小图高最大尺寸,生成小图.

图象缩略函数,参数说明:

$srcfile 原图地址; $dir  新图目录 $thumbwidth 缩小图宽最大尺寸 $thumbheitht 缩小图高最大尺寸 $ratio 默认等比例缩放 为1是缩小到固定尺寸.

php 上传图片并按比例生成指定大小图实例代码如下:

  1. function makethumb($srcfile,$dir,$thumbwidth,$thumbheight,$ratio=0) 
  2. {  
  3.  //判断文件是否存在  
  4. if (!file_exists($srcfile))return false; 
  5.  //生成新的同名文件,但目录不同  
  6. $imgname=explode('/',$srcfile);  
  7. $arrcount=count($imgname);  
  8. $dstfile = $dir.$imgname[$arrcount-1];  
  9. //缩略图大小  
  10. $tow = $thumbwidth;  
  11. $toh = $thumbheight;  
  12. if($tow < 40) $tow = 40;  
  13. if($toh < 45) $toh = 45;     
  14.  //获取图片信息  
  15.     $im ='';  
  16.     if($data = getimagesize($srcfile)) {  
  17.         if($data[2] == 1) {  
  18.             $make_max = 0;//gif不处理  
  19.             if(function_exists("imagecreatefromgif")) {  
  20.                 $im = imagecreatefromgif($srcfile);  
  21.             }  
  22.         } elseif($data[2] == 2) {  
  23.             if(function_exists("imagecreatefromjpeg")) {  
  24.                 $im = imagecreatefromjpeg($srcfile);  
  25.             }  
  26.         } elseif($data[2] == 3) {  
  27.             if(function_exists("imagecreatefrompng")) {  
  28.                 $im = imagecreatefrompng($srcfile);  
  29.             }  
  30.         }  
  31.     }  
  32.     if(!$imreturn '';  
  33.     $srcw = imagesx($im);  
  34.     $srch = imagesy($im);  
  35.     $towh = $tow/$toh;  
  36.     $srcwh = $srcw/$srch;  
  37.     if($towh <= $srcwh){  
  38.         $ftow = $tow;  
  39.         $ftoh = $ftow*($srch/$srcw);  
  40.     } else {  
  41.         $ftoh = $toh;  
  42.         $ftow = $ftoh*($srcw/$srch);  
  43.     }  
  44.     if($ratio){  
  45.         $ftow = $tow;  
  46.         $ftoh = $toh;  
  47.     }  
  48.     //缩小图片  
  49.     if($srcw > $tow || $srch > $toh || $ratio) {  
  50.         if(function_exists("imagecreatetruecolor") && function_exists("imagecopyresampled") && @$ni = imagecreatetruecolor($ftow$ftoh)) {  
  51.             imagecopyresampled($ni$im, 0, 0, 0, 0, $ftow$ftoh$srcw$srch);  
  52.         } elseif(function_exists("imagecreate") && function_exists("imagecopyresized") && @$ni = imagecreate($ftow$ftoh)) {  
  53.             imagecopyresized($ni$im, 0, 0, 0, 0, $ftow$ftoh$srcw$srch);  
  54.         } else {  
  55.             return '';  
  56.         }  
  57.         if(function_exists('imagejpeg')) {  
  58.             imagejpeg($ni$dstfile);  
  59.         } elseif(function_exists('imagepng')) {  
  60.             imagepng($ni$dstfile);  
  61.         }  
  62.     }else {  
  63.         //小于尺寸直接复制  
  64.     copy($srcfile,$dstfile);  
  65.     }  
  66.     imagedestroy($im);  
  67.     if(!file_exists($dstfile)) {  
  68.         return '';  
  69.     } else { //开源代码phpfensi.com 
  70.         return $dstfile;  
  71.     }  

 

Tags: php上传图片 php图片指定大小

分享到: