一直想在网上找个图片所略图程序,但是一直没有找到无变形的,一般都是对原图进行简单的缩放,我想也许已经有了,只是我没有找到,所以没办法自己写了一个,其实也不是全是自己写的,只是在已有的基础上改的.
版权说明:该版本是在“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缩略图生成程序源码如下:
//程序设计:swin.wang Email: php_in_china@yahoo.com.cn QQ:592298893
//该程序你可无限制使用,但请保留版权信息.
classieb_upload{
var$FormName;//文件域名称
var$Directroy;//上传至目录
var$MaxSize;//最大上传大小
var$CanUpload;//是否可以上传
var$doUpFile;//上传的文件名
var$sm_File;//缩略图名称
var$Error;//错误参数
functionieb_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.'/';
}
}
//检查文件是否存在
functionscanFile()
{
global$FormName,$Error,$CanUpload;
if($CanUpload){
$scan=is_readable($_FILES[$FormName]['name']);
if($scan){
$Error= 2;
}
return$scan;
}
}
//获取文件大小
functiongetSize($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);
}
}
}
//获取文件类型
functiongetExt()
{
global$FormName,$Error,$CanUpload;
if($CanUpload){
$ext=$_FILES[$FormName]['name'];
$extStr=explode('.',$ext);
$count=count($extStr)-1;
}
return$extStr[$count];
}
//获取文件名称
functiongetName()
{
global$FormName,$CanUpload;
if($CanUpload){
return$_FILES[$FormName]['name'];
}
}
//新建文件名
functionnewName()
{
global$CanUpload,$FormName;
if($CanUpload){
$FullName=$_FILES[$FormName]['name'];
$extStr=explode('.',$FullName);
$count=count($extStr)-1;
$ext=$extStr[$count];
returndate('YmdHis').rand(0,9).'.'.$ext;
}
}
//上传文件
functionupload($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);
returntrue;
}else{
$Error= 4;
return$Error;
}
}
}
//创建图片缩略图
functionthumb($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]) {
case1:
$im= @imagecreatefromgif($Directroy.$srcFile);
break;
case2:
$im= @imagecreatefromjpeg($Directroy.$srcFile);
break;
case3:
$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;
returntrue;
}else{
$Error= 5;
return$Error;
}
}
}
//显示错误参数
functionErr(){
global$Error;
return$Error;
}
//上传后的文件名
functionUpFile(){
global$doUpFile,$Error;
if($doUpFile!=''){
return$doUpFile;
}else{
$Error= 6;
}
}
//上传文件的路径
functionfilePath(){
global$Directroy,$doUpFile,$Error;
if($doUpFile!=''){
return$Directroy.$doUpFile;
}else{
$Error= 6;
}
}
//缩略图文件名称
functionthumbMap(){
global$sm_File,$Error;
if($sm_File!=''){
return$sm_File;
}else{
$Error= 6;
}
}
//开源代码phpfensi.com
//显示版本信息
functionieb_version(){
return'swin img class Ver 0.1';
}
}
?>