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

php缩略图生成程序

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-20 10:00:45 浏览: 评论:0 

一直想在网上找个图片所略图程序,但是一直没有找到无变形的,一般都是对原图进行简单的缩放,我想也许已经有了,只是我没有找到,所以没办法自己写了一个,其实也不是全是自己写的,只是在已有的基础上改的.

版权说明:该版本是在“IEB_UPLOAD CLASS Ver 1.1”的基础上二次开发的,原程序对图片的裁剪将使图片变形、失真!本人在该程序的基础上进行了更改,用数据参数与原图片文件参数(主要是指宽和高)进行对比,得出比例值,先生成与原图片同比例缩放的图片,然后再以该中间图中心开始截取,从而获得缩略图,当然,图片会被裁剪,但是是最小限度的裁剪.

$upfos = new ieb_upload('photo_file','./up_img'); photo_file 表单文件域名称,不要加$; ./up_img,上传位置

$old_file_name=$upfos -> getName();

$old_file_fooder=$upfos -> getExt();

$file_size=$upfos -> getSize();

$file_name=$upfos -> newName();

$upfos -> upload($file_name); 

$upfos -> thumb("small_",125,120);

$new_file_name=$upfos -> UpFile(); $new_file_name 上传后大图名

$small_file_name="small_".$new_file_name;  $small_file_name 略图名

php缩略图生成程序源码如下:

  1. <?php 
  2. //程序设计:swin.wang  Email: php_in_china@yahoo.com.cn QQ:592298893 
  3.  
  4. //该程序你可无限制使用,但请保留版权信息. 
  5.  
  6. class ieb_upload{ 
  7. var $FormName//文件域名称 
  8. var $Directroy//上传至目录 
  9. var $MaxSize//最大上传大小 
  10. var $CanUpload//是否可以上传 
  11. var $doUpFile//上传的文件名 
  12. var $sm_File//缩略图名称 
  13. var $Error;  //错误参数 
  14.  
  15. function ieb_upload($formName=''$dirPath=''$maxSize=2097152) //(1024*2)*1024=2097152 就是 2M 
  16.   global $FormName$Directroy$MaxSize$CanUpload$Error$doUpFile$sm_File
  17.   //初始化各种参数 
  18.   $FormName = $formName
  19.   $MaxSize = $maxSize
  20.   $CanUpload = true; 
  21.   $doUpFile = ''
  22.   $sm_File = ''
  23.   $Error = 0; 
  24.    
  25.   if ($formName == ''){ 
  26.    $CanUpload = false; 
  27.    $Error = 1; 
  28.    break
  29.    } 
  30.    
  31.   if ($dirPath == ''){ 
  32.    $Directroy = $dirPath
  33.   }else
  34.    $Directroy = $dirPath.'/'
  35.   } 
  36.  
  37. //检查文件是否存在 
  38. function scanFile() 
  39.   global $FormName$Error$CanUpload
  40.    
  41.   if ($CanUpload){ 
  42.    
  43.    $scan = is_readable($_FILES[$FormName]['name']); 
  44.     
  45.    if ($scan){    
  46.     $Error = 2; 
  47.    } 
  48.     
  49.    return $scan
  50.   } 
  51.  
  52.  
  53. //获取文件大小 
  54. function getSize($format = 'B'
  55.   global $FormName$Error$CanUpload
  56.    
  57.   if ($CanUpload){ 
  58.    
  59.    if ($_FILES[$FormName]['size'] == 0){ 
  60.     $Error = 3; 
  61.     $CanUpload = false; 
  62.    } 
  63.     
  64.    switch ($format){ 
  65.    case 'B'
  66.    return $_FILES[$FormName]['size']; 
  67.    break
  68.     
  69.    case 'M'
  70.    return ($_FILES[$FormName]['size'])/(1024*1024); 
  71.    } 
  72.     
  73.   } 
  74.  
  75. //获取文件类型 
  76. function getExt() 
  77.   global $FormName$Error$CanUpload
  78.    
  79.   if ($CanUpload){ 
  80.    $ext=$_FILES[$FormName]['name']; 
  81.    $extStr=explode('.',$ext); 
  82.    $count=count($extStr)-1; 
  83.   } 
  84.   return $extStr[$count]; 
  85.  
  86. //获取文件名称 
  87. function getName() 
  88.   global $FormName$CanUpload
  89.    
  90.   if ($CanUpload){ 
  91.    return $_FILES[$FormName]['name']; 
  92.   } 
  93.  
  94. //新建文件名 
  95. function newName() 
  96.   global $CanUpload$FormName
  97.    
  98.   if ($CanUpload){ 
  99.    $FullName=$_FILES[$FormName]['name']; 
  100.    $extStr=explode('.',$FullName); 
  101.    $count=count($extStr)-1; 
  102.    $ext = $extStr[$count]; 
  103.     
  104.    return date('YmdHis').rand(0,9).'.'.$ext
  105.   } 
  106.  
  107. //上传文件 
  108. function upload($fileName = ''
  109.   global $FormName$Directroy$CanUpload$Error$doUpFile
  110.    
  111.   if ($CanUpload){ 
  112.    if ($_FILES[$FormName]['size'] == 0){ 
  113.     $Error = 3; 
  114.     $CanUpload = false; 
  115.     return $Error
  116.     break
  117.    } 
  118.   } 
  119.    
  120.   if($CanUpload){ 
  121.    
  122.    if ($fileName == ''){ 
  123.     $fileName = $_FILES[$FormName]['name']; 
  124.    } 
  125.         
  126.    $doUpload=@copy($_FILES[$FormName]['tmp_name'], $Directroy.$fileName); 
  127.     
  128.    if($doUpload
  129.    { 
  130.     $doUpFile = $fileName
  131.     chmod($Directroy.$fileName, 0777); 
  132.     return true; 
  133.    }else
  134.     $Error = 4; 
  135.     return $Error
  136.    } 
  137.   } 
  138.  
  139. //创建图片缩略图 
  140. function thumb($dscChar='',$width=160,$height=120) 
  141.   global $CanUpload$Error$Directroy$doUpFile$sm_File
  142.    
  143.   if ($CanUpload && $doUpFile != ''){ 
  144.    $srcFile = $doUpFile
  145.     
  146.    if ($dscChar == ''){ 
  147.     $dscChar = 'sm_'
  148.    } 
  149.     
  150.    $dscFile = $Directroy.$dscChar.$srcFile
  151.    $data = getimagesize($Directroy.$srcFile,&$info); 
  152.     
  153.    switch ($data[2]) { 
  154.    case 1: 
  155.    $im = @imagecreatefromgif($Directroy.$srcFile); 
  156.    break
  157.     
  158.    case 2: 
  159.    $im = @imagecreatefromjpeg($Directroy.$srcFile); 
  160.    break
  161.     
  162.    case 3: 
  163.    $im = @imagecreatefrompng($Directroy.$srcFile); 
  164.    break
  165.    } 
  166.     
  167.    $srcW=imagesx($im); 
  168.    $srcH=imagesy($im); 
  169.     
  170.    if(($srcW/$width)>=($srcH/$height)){ 
  171.                 $temp_height=$height
  172.                 $temp_width=$srcW/($srcH/$height); 
  173.                 $src_X=abs(($width-$temp_width)/2); 
  174.                 $src_Y=0; 
  175.         } 
  176.         else
  177.                 $temp_width=$width
  178.                 $temp_height=$srcH/($srcW/$width); 
  179.                 $src_X=0; 
  180.                 $src_Y=abs(($height-$temp_height)/2); 
  181.                 } 
  182.         $temp_img=imagecreatetruecolor($temp_width,$temp_height); 
  183.         imagecopyresized($temp_img,$im,0,0,0,0,$temp_width,$temp_height,$srcW,$srcH); 
  184.          
  185.          
  186.         $ni=imagecreatetruecolor($width,$height); 
  187.         imagecopyresized($ni,$temp_img,0,0,$src_X,$src_Y,$width,$height,$width,$height); 
  188.         $cr = imagejpeg($ni,$dscFile); 
  189.            chmod($dscFile, 0777); 
  190.             
  191.    
  192.    if ($cr){ 
  193.     $sm_File = $dscFile
  194.     return true; 
  195.    }else
  196.     $Error = 5; 
  197.     return $Error
  198.    } 
  199.   } 
  200.  
  201. //显示错误参数 
  202. function Err(){ 
  203.   global $Error
  204.   return $Error
  205.  
  206. //上传后的文件名 
  207. function UpFile(){ 
  208.   global $doUpFile$Error
  209.   if ($doUpFile != ''){ 
  210.    return $doUpFile
  211.   }else
  212.    $Error = 6; 
  213.   } 
  214.  
  215. //上传文件的路径 
  216. function filePath(){ 
  217.   global $Directroy$doUpFile$Error
  218.   if ($doUpFile != ''){ 
  219.    return $Directroy.$doUpFile
  220.   }else
  221.    $Error = 6; 
  222.   }   
  223.  
  224. //缩略图文件名称 
  225. function thumbMap(){ 
  226.   global $sm_File$Error
  227.   if ($sm_File != ''){ 
  228.    return $sm_File
  229.   }else
  230.    $Error = 6; 
  231.   } 
  232. //开源代码phpfensi.com 
  233. //显示版本信息 
  234. function ieb_version(){ 
  235.   return 'swin img class Ver 0.1'
  236. ?> 

Tags: php缩略图 生成程序

分享到: