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

Tags: php缩略图 生成程序

分享到: