PHP上传图片生成缩略图代码

PHP上传图片生成缩略图代码



[复制到剪切板]
CODE:
class upload{
    
    private 
$file;
    public 
$filedir;
    private 
$filename;
    public 
$sumbfiledir;
    private 
$sumbfilename;
    private 
$authorize;
    private 
$valid;
    private 
$code;

    
//这段代码是我们用来识别用户身份的,你们可以不用,因为我们做的是通用程序,给客户用的
    //function __construct($code){
    //    $this->file = new file($code);
    //    if($this->file->rules('encoding')!=''){
    //        mysql_query("set names ".$this->file->rules('encoding'));
    //    } else {
    //        mysql_query("set names utf8");
    //    }
    //}
    
    //设置路径,为了方便我把$filedir变量改为public,大家可以不用setPath方法而直接定义$filedir变量
    
function setPath(){
        
$picDir UPLOAD_DIR."items";
        if(!
is_dir($picDir)){
            
mkdir($picDir);
        }
        if(!
is_dir($picDir.DIRECTORY_SEPARATOR.$this->file->rules('id'))){
            
mkdir($picDir.DIRECTORY_SEPARATOR.$this->file->rules('id'));
        }
        
$this->filedir $picDir.DIRECTORY_SEPARATOR.$this->file->rules('id').DIRECTORY_SEPARATOR.date("ymd");
        if(!
is_dir($this->filedir)){
            
mkdir($this->filedir);
        }
        
    }
    
    
//设置文件名,按照需要自己更改
    
function setFilename($userid){
        
$this->filename md5($userid.time()).".jpg";
    }
    
    
//设置路径,为了方便我把$sumbfiledir变量改为public,大家可以不用sumbFiledir方法而直接定义$sumbfiledir变量
    
function sumbFiledir(){
        
$sumbDir UPLOAD_DIR."thumbnails";
        if(!
is_dir($sumbDir)){
            
mkdir($sumbDir);
        }
        if(!
is_dir($sumbDir.DIRECTORY_SEPARATOR.$this->file->rules('id'))){
            
mkdir($sumbDir.DIRECTORY_SEPARATOR.$this->file->rules('id'));
        }
        
$this->sumbfiledir $sumbDir.DIRECTORY_SEPARATOR.$this->file->rules('id').DIRECTORY_SEPARATOR.date("ymd");
        if(!
is_dir($this->sumbfiledir)){
            
mkdir($this->sumbfiledir);
        }
    }

    
//设置缩略图文件名,按照需要自己更改    
    
function sumbFilename($userid){
        
$this->sumbfilename "small".md5($userid.time()).".jpg";
    }
    
    
//设置上传者,这个可以根据自己的需求更改,我这里是客户的标识,估计你们用不到
    //function setAuthorize(){
    //    if($this->file->rules('need_authority')==1){
    //        if($this->file->rules('authorize_type')==1){
    //            $this->authorize = 0;
    //            $this->valid = 0;
    //        } else {
    //            $this->authorize = 0;
    //            $this->valid = 1;
    //        }
    //    } else {
    //        $this->authorize = 1;
    //        $this->valid = 1;
    //    }
    //}
    
    //上传方法,第一个参数是用户标识,第二个参数是文件,第三个参数是文件类型
    
function _upload($userid,$file,$filetype){

        
//前4个方法可以保留也可以根据自己需要修改
        //$this->setPath();
        //$this->setFilename($userid);
        //$this->sumbFiledir();
        //$this->sumbFilename($userid);

        //$this->setAuthorize();
        
if(move_uploaded_file($file,$this->filedir."/".$this->filename)){
            
//header('Content-type: image/jpeg');
            
list($width$height) = getimagesize($this->filedir."/".$this->filename);
            
$newwidth $this->file->rules('thumbnail_width');
            
$newheight $this->file->rules('thumbnail_height');
            
//echo $newwidth.".".$newheight;
            
$thumb imagecreatetruecolor($newwidth$newheight);
            if(
$filetype == 'image/jpeg' || $filetype == 'image/pjpeg'){
                
$source imagecreatefromjpeg($this->filedir."/".$this->filename);
            } else if(
$filetype == 'image/bmp') {
                
$source imagecreatefromwbmp($this->filedir."/".$this->filename);
            } else if(
$filetype == 'image/gif') {
                
$source imagecreatefromgif($this->filedir."/".$this->filename);
            } else if(
$filetype == 'image/png') {
                
$source imagecreatefrompng($this->filedir."/".$this->filename);
            } else {
                return 
false;
            }
            
imagecopyresampled($thumb$source0000$newwidth$newheight$width$height);
            
imagejpeg($thumb$this->sumbfiledir."/".$this->sumbfilename100);
            return 
true;
        } else {
            return 
false;
        }
    }
    
    function 
_storage($title,$description,$userid){
        require_once(
"lib/mysql.php");
        
//这里有个数据库方法,大家可以用传统的mysql_connect等等代替
        
$mysql getDBConnection();
        
$this->code md5($userid.time());
        
//下面的rules是我们识别客户的身份用的,大家可以不用
        //if ($this->file->rules('encoding') != "gb2312") {
        //    if (($this->file->rules('encoding')) == "utf8") $encoding = "utf-8";
        //    else $encoding = $this->file->rules('encoding');
        //    $title = iconv($encoding, "gb2312", $title);
        //    $description = iconv($encoding, "gb2312", $description);
        //}
        
        
        
$itemPos SITE_ROOT.str_replace("\\""/"substr($this->filedirstrlen(SITE_BASEDIR)))."/".$this->filename;
        
        
$itemThumbnailPos SITE_ROOT.str_replace("\\""/"substr($this->sumbfiledirstrlen(SITE_BASEDIR)))."/".$this->sumbfilename;
        
        
//SQL语句自己写
        //$sql = "insert into upload_items values(id,".$this->file->rules('id').",'image','".$title."','".$description."','".$this->code."','".$itemPos."','".$itemThumbnailPos."',now(),'".$_SERVER['REMOTE_ADDR']."',".$this->authorize.",'0000-00-00 00:00:00',".$this->valid.")";
        
if($mysql->Execute($sql)){
            return 
true;
        } else {
            return 
false;
        }
    }
    
    
//返回识别码,大家可能用不到
    //function returnCode(){
    //    return $this->code;
    //}
} ;

注释已经加上了,大家根据需要自己改,这个还是测试阶段,没成型,估计有很多垃圾代码

学习了

学习下,先珍藏再看看。