php支撑生成缩略图文件上传代码
php支撑生成缩略图文件上传代码: <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=gb2312" /> <title>无标题文档</title> </head> <body> <?php class upfileclass { var $upfile, $upfile_name, $upfile_size; # $upfile 临时文件名 $_files['tmp_name'] ,$upfile_name 文件名 $_files['name'] ,$upfile_size 文件大小$_files['size']; var $new_upfile_name; # 上传后的文件名称 ; var $fleth, $fileextent; # 文件扩展名(类型) ; var $f1, $f2, $f3; # 文件保存路径(多级) upfiles/2008-01/08/; var $filename; # 文件(带路径) ; var $filepath; #相对路径用来删除文件; var $maxsize, $file_type; # 允许上传文件的大小 允许上传文件的类型 ; var $buildfile,$newfile,$file_width,$file_height,$rate; function upfileclass($upfile,$upfile_name,$upfile_size){ $this->upfile = $upfile; $this->upfile_name = $upfile_name; $this->upfile_size = $upfile_size; $this->new_upfile_name = $this->createnewfilename($this->upfile_name); $this->f1 = "upfiles"; $this->f2 = $this->f1."/".date('y')."-".date('m'); $this->f3 = $this->f2."/".date('d'); $this->filename = $this->f3 . "/" . $this->new_upfile_name; $this->maxsize = 500*1024; # 文件大小 500kb $this->file_type = "gif/jpg/jpeg/png/bmp"; # 允许上传的文件类型 } # 创建新文件名 (原文件名) function createnewfilename($file_name){ $this->fleth = explode(".",$file_name); $this->fileextent = $this->fleth[(int)count($this->fleth)-1]; # 获取文件后缀; $tmps教程tr = date('ymd').rand(0,time()) . "." .$this->fileextent; # 创建新文件名; return $tmpstr; } # 检测文件类型是否正确 function chk_fileextent(){ $iwtrue = 0; $fle = explode("/",$this->file_type); for($i=0; $i < count($fle); $i++){ if($this->fileextent == $fle[$i]){ $iwtrue = (int) $iwtrue + 1; } } if( $iwtrue == 0 ){ $this->msg("文件不符合 ".$this->file_type." 格式!"); } } # 提示错误信息并终止操作 function msg($error){ echo "<script language="网页特效"> "; echo " alert('".$error."'); "; echo " window.history.back(); "; echo "</script> "; die(); } # 保存文件 function savefile(){ $this->chk_fileextent(); $this->chk_filesize(); $this->createfolder( "../".$this->f1 ); $this->createfolder( "../".$this->f2 ); $this->createfolder( "../".$this->f3 ); return $this->chk_savefile(); } # 检测上传结果是否成功 function chk_savefile(){ $copymsg = copy($this->upfile,"../".$this->filename); if( $copymsg ){ return $this->filename; } else{ $this->msg("文件上传失败! 请重新上传! "); } } # 创建文件夹 function createfolder($foldername){ if( !is_dir($foldername) ){ mkdir($foldername,0777); } } # 检测文件大小 function chk_filesize(){ if( $this->upfile_size > $this->maxsize ){ $this->msg("目标文件不能大于". $this->maxsize/1024 ." kb"); } } # 删除文件($filepath 文件相对路径) function deletefile($filepath){ if( !is_file($filepath) ){ return false; } else{ $ending = @unlink($filepath); return $ending; } } /* 函数:生成缩略图 makebuild("/www.Cuoxin.com/a.jpg","news/b.jpg","100"); 参数: echo $buildfile; 原图 带路径 echo $newfile; 生成的缩略图 带路径 echo $file_width; 缩略图宽度值 echo $file_height; 缩略图高度值 (默认为宽度的比例值) echo $rate; 缩略图象品质; */ function makebuild($buildfile,$newfile,$file_width,$file_height=0,$rate=100) { if(!is_file($buildfile)){ $this->msg("文件 ".$buildfile." 不是一个有效的图形文件! 系统无法生成该文件的缩略图!"); return false; } $data = getimagesize($buildfile); switch($data[2]){ case 1: $im = @imagecreatefromgif($buildfile); break; case 2: $im = @imagecreatefromjpeg($buildfile); break; case 3: $im = @imagecreatefrompng($buildfile); break; } if(!$im){ return false; } else{ $srcw = imagesx($im); # 取得原图宽度; $srch = imagesy($im); # 取得原图高度; $dstx = 0; $dsty = 0; if($file_height==0){ $file_height = $file_width/$srcw*$srch; } if ($srcw*$file_height>$srch*$file_width){ $ffile_height = round($srch*$file_width/$srcw); $dsty = floor(($file_height-$ffile_height)/2); $ffile_width = $file_width; } else { $ffile_width = round($srcw*$file_height/$srch); $dstx = floor(($file_width-$ffile_width)/2); $ffile_height = $file_height; } $ni = imagecreatetruecolor($file_width,$file_height); $dstx = ($dstx<0)?0:$dstx; $dsty = ($dstx<0)?0:$dsty; $dstx = ($dstx>($file_width/2))?floor($file_width/2):$dstx; $dsty = ($dsty>($file_height/2))?floor($file_height/s):$dsty; imagecopyresized($ni,$im,$dstx,$dsty,0,0,$ffile_width,$ffile_height,$srcw,$srch); imagejpeg($ni,$newfile,$rate); # 生成缩略图; imagedestroy($im); # imagedestroy(resource) 释放image关联的内存 } } } ?> //开源代码Cuoxin.com </body> </html> (编辑:银川站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |