首页 > php图像处理 > php支持生成缩略图文件上传代码

php支持生成缩略图文件上传代码

<!doctype html> 
<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.phprm.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关联的内存
            
        }
    }
}
?>
</body> 
</html>


本文地址:http://www.phprm.com/tuxiang/fs4482.html

转载随意,但请附上文章地址:-)

标签:php文件上传 php生成缩略图

相关文章

发表留言