/*---------------------------------------------------------------------------------- * *---------------------------------------------------------------------------------- */ class image_up{ //定义基本参数 private $uptype=array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png'); //上传文件类型 private $max_file_size=102400; //上传大小限制(单位:KB) private $destination_folder="up/"; //上传文件路径 private $watermark=1; //是否附加水印 private $watertype=1; //水印类型(1为文字,2为图片) private $waterposition=1; //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中); private $waterstring=null; //水印字符串 private $waterimg=null; //水印图片 private $imgpreview=1; //是否生成预览图(1为生成,其他为不生成); private $imgpreviewsize=1; //预览图比例,0为按固定宽和高显示,其他为比例显示 private $imgwidth=200; //预览图固定宽度 private $imgheight=200; //预览图固定高度 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ private $imgthu=1; //是否生成且保存略缩图,1为生成,0为不生成 private $imgthu_folder=null; //略缩图保存路径,默认与文件路径一致 private $imgthu_fixed=0; //略缩图是否使用固定宽高,1为使用,0为灵活变动 private $imgthu_width=200; //略缩图宽度 private $imgthu_height=200; //略缩图高度 private $imgthu_name=null; //略缩图名称 //****************************************************************************************************************** private $inputname="upfile"; //文件上传框名称 //****************************************************************************************************************** private $img_preview_display; //图片预览图显示 //****************************************************************************************************************** //文件上传相关信息,1为文件不存在,2为类型不符合,3为超出大小限制,4为上传失败,0为上传成功 private $file_up_info=null; //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //可在外部获取上传文件基本信息 private $file_name; //客服端文件的原名称 private $file_type; //文件的MIME类型 private $file_size; //已上传文件的大小,单位/字节 private $file_tmp_name; //储存的临时文件名 private $file_error; //该文件上传相关错误代码 private $img_size; //取得图片的长宽 private $file_basename; //获取带扩展名的全名 private $file_extension; //获取文件扩展名 private $filename; //文件名(不带扩展名) private $destination; //问价路径加名称 //****************************************************************************************************************** public function __set($propety_name,$value){ https://www.gxlcms.com/$this->$propety_name=$value; } public function __get($property_name){ if(isset(https://www.gxlcms.com/$this->$property_name)) return(https://www.gxlcms.com/$this->$property_name); else return(NULL); } //****************************************************************************************************************** //定义文件上传功能 public function up(){ //判断文件是否存在 if(!is_uploaded_file($_FILES[https://www.gxlcms.com/$this->inputname]["tmp_name"])){ https://www.gxlcms.com/$this->file_up_info=1; return; } //获取并赋值相应基本参数 $upfile=$_FILES[https://www.gxlcms.com/$this->inputname]; https://www.gxlcms.com/$this->file_name=$upfile["name"]; https://www.gxlcms.com/$this->file_type=$upfile["type"]; https://www.gxlcms.com/$this->file_size=$upfile["size"]; https://www.gxlcms.com/$this->file_tmp_name=$upfile["tmp_name"]; https://www.gxlcms.com/$this->file_error=$upfile["error"]; //检查文件类型是否符合 if(!in_array(https://www.gxlcms.com/$this->file_type,https://www.gxlcms.com/$this->uptype)){ https://www.gxlcms.com/$this->file_up_info=2; return; } //检查文件大小是否超出限制 if(https://www.gxlcms.com/$this->file_size>https://www.gxlcms.com/$this->max_file_size){ https://www.gxlcms.com/$this->file_up_info=3; return; } //判断目录是否存在 if(!file_exists(https://www.gxlcms.com/$this->destination_folder)) mkdir(https://www.gxlcms.com/$this->destination_folder); //进一步取得图片的信息并赋值 https://www.gxlcms.com/$this->img_size=getimagesize(https://www.gxlcms.com/$this->file_tmp_name); $pathinfo=pathinfo(https://www.gxlcms.com/$this->file_name); https://www.gxlcms.com/$this->file_extension=$pathinfo["extension"]; //获取文件扩展名 https://www.gxlcms.com/$this->file_basename=$pathinfo["basename"]; //获取带扩展名的全名 https://www.gxlcms.com/$this->filename=$pathinfo["filename"]; //文件名(不带扩展名) $filename2=$pathinfo['filename']; https://www.gxlcms.com/$this->destination = https://www.gxlcms.com/$this->destination_folder.https://www.gxlcms.com/$this->filename.".".https://www.gxlcms.com/$this->file_extension; //判断文件名是否存在,如果存在则重命名 $n=1; while (file_exists(https://www.gxlcms.com/$this->destination)){ while (file_exists(https://www.gxlcms.com/$this->destination)){ $n++; https://www.gxlcms.com/$this->filename=https://www.gxlcms.com/$this->filename."(".$n.")"; https://www.gxlcms.com/$this->destination = https://www.gxlcms.com/$this->destination_folder.https://www.gxlcms.com/$this->filename.".".https://www.gxlcms.com/$this->file_extension; } https://www.gxlcms.com/$this->filename=$filename2."(".$n.")"; https://www.gxlcms.com/$this->destination = https://www.gxlcms.com/$this->destination_folder.https://www.gxlcms.com/$this->filename.".".https://www.gxlcms.com/$this->file_extension; } //移动上传的文件 if(move_uploaded_file(https://www.gxlcms.com/$this->file_tmp_name,https://www.gxlcms.com/$this->destination)) https://www.gxlcms.com/$this->file_up_info=0; else https://www.gxlcms.com/$this->file_up_info=4; //添加水印 if(https://www.gxlcms.com/$this->watermark==1){ https://www.gxlcms.com/$this->imgthu(); } //生成略缩图 if(https://www.gxlcms.com/$this->imgthu==1){ https://www.gxlcms.com/$this->add_watermark(); } //生成预览图 if(https://www.gxlcms.com/$this->imgpreviewsize == 0){ if(https://www.gxlcms.com/$this->img_size["0"]imgwidth) https://www.gxlcms.com/$this->imgwidth=https://www.gxlcms.com/$this->img_size["0"]; if(https://www.gxlcms.com/$this->img_size["1"]imgheight) https://www.gxlcms.com/$this->imgheight=https://www.gxlcms.com/$this->img_size["1"]; }else{ https://www.gxlcms.com/$this->imgwidth=https://www.gxlcms.com/$this->img_size["0"]*https://www.gxlcms.com/$this->imgpreviewsize; https://www.gxlcms.com/$this->imgheight=https://www.gxlcms.com/$this->img_size["1"]*https://www.gxlcms.com/$this->imgpreviewsize; } https://www.gxlcms.com/$this->img_preview_display=" alt="图片预览:r文件名":https://www.gxlcms.com/$this->file_tmp_name />"; } //==================================================================================================================== //==================================================================================================================== //生成略缩图功能 function imgthu(){ if(https://www.gxlcms.com/$this->imgthu_folder==null) https://www.gxlcms.com/$this->imgthu_folder=https://www.gxlcms.com/$this->destination_folder; //https://www.gxlcms.com/$this->imgthu_name=https://www.gxlcms.com/$this->filename."_t.".https://www.gxlcms.com/$this->file_extension; $imgthu_name_b=https://www.gxlcms.com/$this->filename."_t"; $imgthu_name_b2=https://www.gxlcms.com/$this->filename."_t"; $destination_b=https://www.gxlcms.com/$this->imgthu_folder.$imgthu_name_b.".".https://www.gxlcms.com/$this->file_extension; //判断文件名是否存在,如果存在则重命名 $n=1; while (file_exists($destination_b)){ while (file_exists($destination_b)){ $n++; $imgthu_name_b=$imgthu_name_b."(".$n.")"; $destination_b = https://www.gxlcms.com/$this->imgthu_folder.$imgthu_name_b.".".https://www.gxlcms.com/$this->file_extension; } $imgthu_name_b=$imgthu_name_b2."(".$n.")"; $destination_b = https://www.gxlcms.com/$this->imgthu_folder.$imgthu_name_b.".".https://www.gxlcms.com/$this->file_extension; } $imginfo=getimagesize(https://www.gxlcms.com/$this->destination); switch($imginfo[2]) { case 1: $in=@imagecreatefromgif(https://www.gxlcms.com/$this->destination); break; case 2: $in=@imagecreatefromjpeg(https://www.gxlcms.com/$this->destination); break; case 3: $in=@imagecreatefrompng(https://www.gxlcms.com/$this->destination); break; case 6: $in =@imagecreatefrombmp(https://www.gxlcms.com/$this->destination); break; default: break; } //计算略缩图长宽 if(https://www.gxlcms.com/$this->imgthu_fixed==0){ if(https://www.gxlcms.com/$this->imgthu_height>($imginfo[1]/$imginfo[0])*https://www.gxlcms.com/$this->imgthu_width) https://www.gxlcms.com/$this->imgthu_width = ($imginfo[0]/$imginfo[1])*https://www.gxlcms.com/$this->imgthu_height; else https://www.gxlcms.com/$this->imgthu_height=($imginfo[1]/$imginfo[0])*https://www.gxlcms.com/$this->imgthu_width; } $new = imageCreateTrueColor(https://www.gxlcms.com/$this->imgthu_width,https://www.gxlcms.com/$this->imgthu_height); ImageCopyResized($new,$in,0,0,0,0,https://www.gxlcms.com/$this->imgthu_width,https://www.gxlcms.com/$this->imgthu_height,$imginfo[0],$imginfo[1]); switch ($imginfo[2]) { case 1: imagejpeg($new,$destination_b); break; case 2: imagejpeg($new,$destination_b); break; case 3: imagepng($new,$destination_b); break; case 6: imagewbmp($new,$destination_b); break; } } //==================================================================================================================== //==================================================================================================================== //添加水印功能 function add_watermark(){ //1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order), //8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM。 $imginfo=getimagesize(https://www.gxlcms.com/$this->destination); $im=imagecreatetruecolor(https://www.gxlcms.com/$this->img_size[0],https://www.gxlcms.com/$this->img_size[1]); //创建真彩色 $white=imagecolorallocate($im,255,255,255); //设置颜色 $black=imagecolorallocate($im,0,0,0); $red=imagecolorallocate($im,255,0,0); //在 image 图像的坐标 x,y(图像左上角为 0, 0)处用 color 颜色执行区域填充(即与 x, y 点颜色相同且相邻的点都会被填充)。 imagefill($im,0,0,$white); switch($imginfo[2]) { case 1: $simage =imagecreatefromgif(https://www.gxlcms.com/$this->destination); // 创建一个新的形象,从文件或 URL break; case 2: $simage =imagecreatefromjpeg(https://www.gxlcms.com/$this->destination); break; case 3: $simage =imagecreatefrompng(https://www.gxlcms.com/$this->destination); break; case 6: $simage =imagecreatefromwbmp(https://www.gxlcms.com/$this->destination); break; default: echo ("不支持的文件类型"); break; } if(!empty($simage)) { //位置设置 if(https://www.gxlcms.com/$this->watertype==1){ $str_len=strlen(https://www.gxlcms.com/$this->waterstring); $str_width=$str_len*10; $str_height=20; }elseif(https://www.gxlcms.com/$this->watertype==1 && file_exists(https://www.gxlcms.com/$this->waterimg)){ $iinfo=getimagesize(https://www.gxlcms.com/$this->waterimg); $str_width = $iinfo[0]; $str_height = $iinfo[1]; } switch (https://www.gxlcms.com/$this->waterposition){ case 1: $p_x=5; $p_y=https://www.gxlcms.com/$this->img_size[1]-$str_height; break; case 2: $p_x=https://www.gxlcms.com/$this->img_size[0]-$str_width; $p_y=https://www.gxlcms.com/$this->img_size[1]-$str_height; break; case 3: $p_x=5; $p_y=0; break; case 4: $p_x=https://www.gxlcms.com/$this->img_size[0]-$str_width; $p_y=5; break; case 5: $p_x=(https://www.gxlcms.com/$this->img_size[0]-$str_width)/2; $p_y=(https://www.gxlcms.com/$this->img_size[1]-$str_height)/2; break; } imagecopy($im,$simage,0,0,0,0,https://www.gxlcms.com/$this->img_size[0],https://www.gxlcms.com/$this->img_size[1]); //拷贝图像的一部分 //imagefilledrectangle($im,1,https://www.gxlcms.com/$this->img_size[1]-15,130,https://www.gxlcms.com/$this->img_size[1],$white); //将图片的封闭长方形区域着色 switch(https://www.gxlcms.com/$this->watertype) { case 1: //加水印字符串 imagestring($im,10,$p_x,$p_y,https://www.gxlcms.com/$this->waterstring,$red); break; case 2: //加水印图片 $simage1 =imagecreatefromgif(https://www.gxlcms.com/$this->waterimg); imagecopy($im,$simage1,0,0,0,0,85,15); imagedestroy($simage1); break; } switch ($imginfo[2]) { case 1: //imagegif($nimage, $destination); imagejpeg($im, https://www.gxlcms.com/$this->destination); break; case 2: imagejpeg($im, https://www.gxlcms.com/$this->destination); break; case 3: imagepng($im, https://www.gxlcms.com/$this->destination); break; case 6: imagewbmp($im, https://www.gxlcms.com/$this->destination); break; } //覆盖原上传文件 imagedestroy($im); imagedestroy($simage); } } } ?> |