php缩略图生成程序
一直想在网上找个图片所略图程序,但是一直没有找到无变形的,一般都是对原图进行简单的缩放,我想也许已经有了,只是我没有找到,所以没办法自己写了一个,其实也不是全是自己写的,只是在已有的基础上改的.
版权说明:该版本是在“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缩略图生成程序源码如下:
- <?php
 - //程序设计:swin.wang Email: php_in_china@yahoo.com.cn QQ:592298893
 - //该程序你可无限制使用,但请保留版权信息.
 - class ieb_upload{
 - var $FormName; //文件域名称
 - var $Directroy; //上传至目录
 - var $MaxSize; //最大上传大小
 - var $CanUpload; //是否可以上传
 - var $doUpFile; //上传的文件名
 - var $sm_File; //缩略图名称
 - var $Error; //错误参数
 - function ieb_upload($formName='', $dirPath='', $maxSize=2097152) //(1024*2)*1024=2097152 就是 2M
 - {
 - global $FormName, $Directroy, $MaxSize, $CanUpload, $Error, $doUpFile, $sm_File;
 - //初始化各种参数
 - $FormName = $formName;
 - $MaxSize = $maxSize;
 - $CanUpload = true;
 - $doUpFile = '';
 - $sm_File = '';
 - $Error = 0;
 - if ($formName == ''){
 - $CanUpload = false;
 - $Error = 1;
 - break;
 - }
 - if ($dirPath == ''){
 - $Directroy = $dirPath;
 - }else{
 - $Directroy = $dirPath.'/';
 - }
 - }
 - //检查文件是否存在
 - function scanFile()
 - {
 - global $FormName, $Error, $CanUpload;
 - if ($CanUpload){
 - $scan = is_readable($_FILES[$FormName]['name']);
 - if ($scan){
 - $Error = 2;
 - }
 - return $scan;
 - }
 - }
 - //获取文件大小
 - function getSize($format = 'B')
 - {
 - global $FormName, $Error, $CanUpload;
 - if ($CanUpload){
 - if ($_FILES[$FormName]['size'] == 0){
 - $Error = 3;
 - $CanUpload = false;
 - }
 - switch ($format){
 - case 'B':
 - return $_FILES[$FormName]['size'];
 - break;
 - case 'M':
 - return ($_FILES[$FormName]['size'])/(1024*1024);
 - }
 - }
 - }
 - //获取文件类型
 - function getExt()
 - {
 - global $FormName, $Error, $CanUpload;
 - if ($CanUpload){
 - $ext=$_FILES[$FormName]['name'];
 - $extStr=explode('.',$ext);
 - $count=count($extStr)-1;
 - }
 - return $extStr[$count];
 - }
 - //获取文件名称
 - function getName()
 - {
 - global $FormName, $CanUpload;
 - if ($CanUpload){
 - return $_FILES[$FormName]['name'];
 - }
 - }
 - //新建文件名
 - function newName()
 - {
 - global $CanUpload, $FormName;
 - if ($CanUpload){
 - $FullName=$_FILES[$FormName]['name'];
 - $extStr=explode('.',$FullName);
 - $count=count($extStr)-1;
 - $ext = $extStr[$count];
 - return date('YmdHis').rand(0,9).'.'.$ext;
 - }
 - }
 - //上传文件
 - function upload($fileName = '')
 - {
 - global $FormName, $Directroy, $CanUpload, $Error, $doUpFile;
 - if ($CanUpload){
 - if ($_FILES[$FormName]['size'] == 0){
 - $Error = 3;
 - $CanUpload = false;
 - return $Error;
 - break;
 - }
 - }
 - if($CanUpload){
 - if ($fileName == ''){
 - $fileName = $_FILES[$FormName]['name'];
 - }
 - $doUpload=@copy($_FILES[$FormName]['tmp_name'], $Directroy.$fileName);
 - if($doUpload)
 - {
 - $doUpFile = $fileName;
 - chmod($Directroy.$fileName, 0777);
 - return true;
 - }else{
 - $Error = 4;
 - return $Error;
 - }
 - }
 - }
 - //创建图片缩略图
 - function thumb($dscChar='',$width=160,$height=120)
 - {
 - global $CanUpload, $Error, $Directroy, $doUpFile, $sm_File;
 - if ($CanUpload && $doUpFile != ''){
 - $srcFile = $doUpFile;
 - if ($dscChar == ''){
 - $dscChar = 'sm_';
 - }
 - $dscFile = $Directroy.$dscChar.$srcFile;
 - $data = getimagesize($Directroy.$srcFile,&$info);
 - switch ($data[2]) {
 - case 1:
 - $im = @imagecreatefromgif($Directroy.$srcFile);
 - break;
 - case 2:
 - $im = @imagecreatefromjpeg($Directroy.$srcFile);
 - break;
 - case 3:
 - $im = @imagecreatefrompng($Directroy.$srcFile);
 - break;
 - }
 - $srcW=imagesx($im);
 - $srcH=imagesy($im);
 - if(($srcW/$width)>=($srcH/$height)){
 - $temp_height=$height;
 - $temp_width=$srcW/($srcH/$height);
 - $src_X=abs(($width-$temp_width)/2);
 - $src_Y=0;
 - }
 - else{
 - $temp_width=$width;
 - $temp_height=$srcH/($srcW/$width);
 - $src_X=0;
 - $src_Y=abs(($height-$temp_height)/2);
 - }
 - $temp_img=imagecreatetruecolor($temp_width,$temp_height);
 - imagecopyresized($temp_img,$im,0,0,0,0,$temp_width,$temp_height,$srcW,$srcH);
 - $ni=imagecreatetruecolor($width,$height);
 - imagecopyresized($ni,$temp_img,0,0,$src_X,$src_Y,$width,$height,$width,$height);
 - $cr = imagejpeg($ni,$dscFile);
 - chmod($dscFile, 0777);
 - if ($cr){
 - $sm_File = $dscFile;
 - return true;
 - }else{
 - $Error = 5;
 - return $Error;
 - }
 - }
 - }
 - //显示错误参数
 - function Err(){
 - global $Error;
 - return $Error;
 - }
 - //上传后的文件名
 - function UpFile(){
 - global $doUpFile, $Error;
 - if ($doUpFile != ''){
 - return $doUpFile;
 - }else{
 - $Error = 6;
 - }
 - }
 - //上传文件的路径
 - function filePath(){
 - global $Directroy, $doUpFile, $Error;
 - if ($doUpFile != ''){
 - return $Directroy.$doUpFile;
 - }else{
 - $Error = 6;
 - }
 - }
 - //缩略图文件名称
 - function thumbMap(){
 - global $sm_File, $Error;
 - if ($sm_File != ''){
 - return $sm_File;
 - }else{
 - $Error = 6;
 - }
 - }
 - //开源代码phpfensi.com
 - //显示版本信息
 - function ieb_version(){
 - return 'swin img class Ver 0.1';
 - }
 - }
 - ?>