最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
php支持生成缩略图文件上传代码
时间:2022-06-24 21:12:19 编辑:袖梨 来源:一聚教程网
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 " ";
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.111com.net/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_,$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关联的内存
}
}
}
?>
相关文章
- 王者荣耀侦探能力大测试攻略 王者荣耀侦探能力大测试怎么过 11-22
- 无期迷途主线前瞻兑换码是什么 11-22
- 原神欧洛伦怎么培养 11-22
- 炉石传说网易云音乐联动怎么玩 11-22
- 永劫无间手游确幸转盘怎么样 11-22
- 无期迷途主线前瞻兑换码是什么 无期迷途主线前瞻直播兑换码介绍 11-22