photo up size php,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缩略图生成程序源码如下:

//程序设计: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';

}

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值