PHP上传图片生成缩略图代码
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, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($thumb, $this->sumbfiledir."/".$this->sumbfilename, 100);
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->filedir, strlen(SITE_BASEDIR)))."/".$this->filename;
$itemThumbnailPos = SITE_ROOT.str_replace("\\", "/", substr($this->sumbfiledir, strlen(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;
//}
} ;
注释已经加上了,大家根据需要自己改,这个还是测试阶段,没成型,估计有很多垃圾代码