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

php图片按比较生成缩略图片代码

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-19 10:51:54 浏览: 评论:0 

图片按在比较进行放大缩小,这得利用php gd库的函数现实现,我们会利用到imagecreatetruecolor(),imagecopyresampled()来操作.

php图片按比较生成缩略图片代码如下:

  1. function my_image_resize($src_file$dst_file$dst_width=32, $dst_height=32) {  
  2.     if($dst_width <1 || $dst_height <1) {  
  3.         echo "params width or height error !";  
  4.         exit();  
  5.     }  
  6.     if(!file_exists($src_file)) {  
  7.         echo $src_file . " is not exists !";  
  8.         exit();  
  9.     } 
  10.  
  11.     $type=exif_imagetype($src_file);  
  12.     $support_type=array(imagetype_jpeg , imagetype_png , imagetype_gif); 
  13.  
  14.     if(!in_array($type$support_type,true)) {  
  15.         echo "this type of image does not support! only support jpg , gif or png";  
  16.         exit();  
  17.     } 
  18.  
  19.     switch($type) {  
  20.         case imagetype_jpeg :  
  21.             $src_img=imagecreatefromjpeg($src_file);  
  22.             break;  
  23.         case imagetype_png :  
  24.             $src_img=imagecreatefrompng($src_file);          
  25.             break;  
  26.         case imagetype_gif :  
  27.             $src_img=imagecreatefromgif($src_file);  
  28.             break;  
  29.         default:  
  30.             echo "load image error!";  
  31.             exit();  
  32.     }  
  33.     $src_w=imagesx($src_img);  
  34.     $src_h=imagesy($src_img);  
  35.     $ratio_w=1.0 * $dst_width/$src_w;  
  36.     $ratio_h=1.0 * $dst_height/$src_h;  
  37.     if ($src_w<=$dst_width && $src_h<=$dst_height) { 
  38.         $x = ($dst_width-$src_w)/2; 
  39.         $y = ($dst_height-$src_h)/2; 
  40.         $new_img=imagecreatetruecolor($dst_width,$dst_height);  
  41.         imagecopy($new_img,$src_img,$x,$y,0,0,$dst_width,$dst_height);  
  42.         switch($type) {  
  43.             case imagetype_jpeg :  
  44.                 imagejpeg($new_img,$dst_file,100); 
  45.                 break;  
  46.             case imagetype_png :  
  47.                 imagepng($new_img,$dst_file);  
  48.                 break;  
  49.             case imagetype_gif :  
  50.                 imagegif($new_img,$dst_file);  
  51.                 break;  
  52.             default:  
  53.                 break;  
  54.         }  
  55.     } else {  
  56.         $dstwh = $dst_width/$dst_height;  
  57.         $srcwh = $src_w/$src_h
  58.         if ($ratio_w <= $ratio_h) { 
  59.             $zoom_w = $dst_width;  
  60.             $zoom_h = $zoom_w*($src_h/$src_w);  
  61.         } else {  
  62.             $zoom_h = $dst_height;  
  63.             $zoom_w = $zoom_h*($src_w/$src_h);  
  64.         } 
  65.  
  66.         $zoom_img=imagecreatetruecolor($zoom_w$zoom_h);  
  67.         imagecopyresampled($zoom_img,$src_img,0,0,0,0,$zoom_w,$zoom_h,$src_w,$src_h);  
  68.         $new_img=imagecreatetruecolor($dst_width,$dst_height);  
  69.         $x = ($dst_width-$zoom_w)/2; 
  70.         $y = ($dst_height-$zoom_h)/2+1; 
  71.         imagecopy($new_img,$zoom_img,$x,$y,0,0,$dst_width,$dst_height); 
  72.         switch($type) {  
  73.             case imagetype_jpeg :  
  74.                 imagejpeg($new_img,$dst_file,100); 
  75.                 break;  
  76.             case imagetype_png :  
  77.                 imagepng($new_img,$dst_file);  
  78.                 break;  
  79.             case imagetype_gif :  
  80.                 imagegif($new_img,$dst_file);  
  81.                 break;  
  82.             default:  
  83.                 break;  
  84.         }//开源代码phpfensi.com 
  85.     } 

总结,我们要生成比例生成小图就利用$dstwh = $dst_width/$dst_height; $srcwh = $src_w/$src_h;进行判断,然后再生成.

Tags: php缩略图片 php生成缩略图片

分享到: