php缩略图生成程序
一直想在网上找个图片所略图程序,但是一直没有找到无变形的,一般都是对原图进行简单的缩放,我想也许已经有了,只是我没有找到,所以没办法自己写了一个,其实也不是全是自己写的,只是在已有的基础上改的.
版权说明:该版本是在"IEB_UPLOAD CLASS Ver 1.1"的基础上二次开发的,原程序对图片的裁剪将使图片变形、失真!本人在该程序的基础上进行了更改,用数据参数与原图片文件参数(主要是指宽和高)进行对比,得出比例值,先生成与原图片同比例缩放的图片,然后再以该中间图中心开始截取,从而获得缩略图,当然,图片会被裁剪,但是是最小限度的裁剪.
//photo_file 表单文件域名称,不要加$; ./up_img,上传位置 $upfos = new ieb_upload('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; } } //显示版本信息 function ieb_version() { return 'swin img class Ver 0.1'; } }
本文链接:http://www.phprm.com/tuxiang/fs4511.html
收藏随意^^请保留教程地址.