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

php图片上传并生成缩略图效果

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-19 14:31:34 浏览: 评论:0 

本教程是一款php图片上传然后,把上传的图片生成小图片,是一款非常好的文件上传类,如果你正在找类程序可以进来看看.

php图片上传并生成缩略图,实例代码如下:

  1. function uploadimage($upname,$smallmark=1,$dstsw,$dstsh=0,$path_dim,$path_xim,$newname,$smallname=0,$filetype="null") { 
  2.     global $webaddr,$_files,$my
  3.     $phpv=str_replace('.''', php_version); 
  4.     $filename=$upname
  5.     $max_file_size = 2147483648;        //上传文件大小限制, 单位byte 2m 
  6.     $path_im = $path_dim;               //生成大图保存文件夹路径 
  7.     $path_sim = $path_xim;              //缩略图保存文件夹路径 
  8.     $simclearly=75; 
  9.     $simclearlypng =$phpv>=512?7:75;        //缩略图清晰度0-100,数字越大越清晰,文件尺寸越大 
  10.     $smallmark = $smallmark;            //是否生成缩略图(1为加生成,其他为不); 
  11.     $dst_sw =$dstsw;                   //定义缩略图宽度,高度我采用等比例缩放,所以只要比较宽度就可以了 
  12.     $uptypes=array
  13.         'image/jpg'
  14.         'image/jpeg'
  15.         'image/png'
  16.         'image/pjpeg'
  17.         'image/gif'
  18.         'image/bmp'
  19.         'image/x-png' 
  20.     ); 
  21.  
  22.     if (!is_uploaded_file($_files[$filename][tmp_name])) { 
  23.         dsetcookie('setok','upload1'); 
  24.         header("location:111cn.net/profile"); 
  25.         exit
  26.     } 
  27.     $file = $_files[$filename]; 
  28.     $pinfo = pathinfo($file["name"]); 
  29.     if ($filetype=="null") { 
  30.         $filetype = $pinfo['extension']; 
  31.     } 
  32.     if (!in_array(strtolower($pinfo['extension']),array("jpg","jpeg","png","gif"))) { 
  33.         dsetcookie('setok','upload3'); 
  34.         header("location:111cn.net/profile"); 
  35.         exit
  36.     } 
  37.  
  38.     if($max_file_size < $file["size"]) {//检查文件大小 
  39.         dsetcookie('setok','upload2'); 
  40.         header("location:111cn.net/profile"); 
  41.         exit
  42.     } 
  43.     if(!in_array($file["type"],$uptypes)) { //检查文件类型 
  44.         dsetcookie('setok','upload3'); 
  45.         header("location:111cn.net/profile"); 
  46.         exit
  47.     } 
  48.     if(!file_exists($path_im)) { 
  49.         mkdir($path_im); 
  50.     } 
  51.  
  52.     $filename = $file["tmp_name"]; 
  53.     $im_size = getimagesize($filename); 
  54.  
  55.     $src_w = $im_size[0]; 
  56.     $src_h = $im_size[1]; 
  57.     $src_type = $im_size[2]; 
  58.  
  59.     $all_path = $path_im.$newname.".".$filetype;//路径+文件名,目前以上传时间命名 
  60.     if (file_exists($all_path)) { 
  61.         @unlink($all_path); 
  62.     } 
  63.     if(!move_uploaded_file ($filename,$all_path)) { 
  64.         dsetcookie('setok','upload4'); 
  65.         header("location:111cn.net/profile"); 
  66.         exit
  67.     } 
  68.     $pinfo = pathinfo($all_path); 
  69.     $fname = $pinfo[basename]; 
  70.  
  71.     switch($src_type) {//判断源图片文件类型 
  72.          case 1://gif 
  73.          $src_im = @imagecreatefromgif($all_path);//从源图片文件取得图像 
  74.          break
  75.          case 2://jpg 
  76.          $src_im = @imagecreatefromjpeg($all_path); 
  77.          break
  78.          case 3://png 
  79.          $src_im = @imagecreatefrompng($all_path); 
  80.          break
  81.          //case 6: 
  82.          //$src_im=imagecreatefromwbmp($all_path); 
  83.          //break; 
  84.          default
  85.          dsetcookie('setok','upload3'); 
  86.          header("location:111cn.net/profile"); 
  87.          exit
  88.     } 
  89.  
  90.    if($smallmark == 1) { 
  91.        if(!file_exists($path_sim)) {//检查缩略图目录是否存在,不存在创建 
  92.            mkdir($path_sim); 
  93.        } 
  94.        if ($smallname$newname=$smallname
  95.        $sall_path = $path_sim.$newname.".".$filetype
  96.        if (file_exists($sall_path)) { 
  97.            @unlink($sall_path); 
  98.        } 
  99.        if($src_w <= $dst_sw) { // 原图尺寸 <= 缩略图尺寸 
  100.            if ($dstsh==0)  { 
  101.                 $dst_sim = @imagecreatetruecolor($src_w,$src_h); //新建缩略图真彩位图 
  102.                 $sx=$sy=0; 
  103.            } else { 
  104.                 $dst_sim = @imagecreatetruecolor($dstsw,$dstsh); //新建缩略图真彩位图 
  105.                 $sx=($dstsw-$src_w)/2; 
  106.                 $sy=($dstsh-$src_h)/2; 
  107.            } 
  108.            $img = @imagecreatefrompng("images/phbg.png"); 
  109.            @imagecopymerge($dst_sim,$img,0,0,0,0,$dstsw,$dstsh,100); //原图图像写入新建真彩位图中 
  110.            @imagecopymerge($dst_sim,$src_im,$sx,$sy,0,0,$src_w,$src_h,100); //原图图像写入新建真彩位图中 
  111.        } 
  112.  
  113.        if($src_w > $dst_sw) { // 原图尺寸 > 缩略图尺寸 
  114.            $dst_sh = $dst_sw/$src_w*$src_h
  115.            if ($dst_sh<$dstsh) { 
  116.                $dst_sh=$dstsh
  117.                $dst_sw=$dst_sh/$src_h*$src_w
  118.            } 
  119.            if ($dstsh==0) { 
  120.                 $dst_sim = @imagecreatetruecolor($dst_sw,$dst_sh); //新建缩略图真彩位图(等比例缩小原图尺寸) 
  121.            } else { 
  122.                 $dst_sim = @imagecreatetruecolor($dstsw,$dstsh); //新建缩略图真彩位图(等比例缩小原图尺寸) 
  123.            } 
  124.            @imagecopyresampled($dst_sim,$src_im,0,0,0,0,$dst_sw,$dst_sh,$src_w,$src_h); //原图图像写入新建真彩位图中 
  125.        } 
  126.  
  127.        switch($src_type) { 
  128.             case 1:@imagegif($dst_sim,$sall_path,$simclearly);//生成gif文件,图片清晰度0-100 
  129.             break
  130.             case 2:@imagejpeg($dst_sim,$sall_path,$simclearly);//生成jpg文件,图片清晰度0-100 
  131.             break
  132.             case 3:@imagepng($dst_sim,$sall_path,$simclearlypng);//生成png文件,图片清晰度0-100 
  133.             break
  134.             //case 6: 
  135.             //imagewbmp($dst_sim,$sall_path); 
  136.             break
  137.        }//开源代码phpfensi.com 
  138.        //释放缓存 
  139.        @imagedestroy($dst_sim); 
  140.     } 
  141.     @imagedestroy($src_im); 
  142.     return $newname.".".$filetype

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

分享到: