代码如下 复制代码
$propety_name=$value;
}
public function __get($property_name){
if(isset($this->$property_name))
return($this->$property_name);
else return(null);
}
//******************************************************************************************************************
//定义文件上传功能
public function up(){
//判断文件是否存在
if(!is_uploaded_file($_files[$this->inputname][tmp_name])){
$this->file_up_info=1;
return;
}
//获取并赋值相应基本参数
$upfile=$_files[$this->inputname];
$this->file_name=$upfile[name];
$this->file_type=$upfile[type];
$this->file_size=$upfile[size];
$this->file_tmp_name=$upfile[tmp_name];
$this->file_error=$upfile[error];
//检查文件类型是否符合
if(!in_array($this->file_type,$this->uptype)){
$this->file_up_info=2;
return;
}
//检查文件大小是否超出限制
if($this->file_size>$this->max_file_size){
$this->file_up_info=3;
return;
}
//判断目录是否存在
if(!file_exists($this->destination_folder))
mkdir($this->destination_folder);
//进一步取得图片的信息并赋值
$this->img_size=getimagesize($this->file_tmp_name);
$pathinfo=pathinfo($this->file_name);
$this->file_extension=$pathinfo[extension]; //获取文件扩展名
$this->file_basename=$pathinfo[basename]; //获取带扩展名的全名
$this->filename=$pathinfo[filename]; //文件名(不带扩展名)
$filename2=$pathinfo['filename'];
$this->destination = $this->destination_folder.$this->filename...$this->file_extension;
//判断文件名是否存在,如果存在则重命名
$n=1;
while (file_exists($this->destination)){
while (file_exists($this->destination)){
$n++;
$this->filename=$this->filename.(.$n.);
$this->destination = $this->destination_folder.$this->filename...$this->file_extension;
}
$this->filename=$filename2.(.$n.);
$this->destination = $this->destination_folder.$this->filename...$this->file_extension;
}
//移动上传的文件
if(move_uploaded_file($this->file_tmp_name,$this->destination))
$this->file_up_info=0;
else $this->file_up_info=4;
//添加水印
if($this->watermark==1){
$this->imgthu();
}
//生成略缩图
if($this->imgthu==1){
$this->add_watermark();
}
//生成预览图
if($this->imgpreviewsize == 0){
if($this->img_size[0]imgwidth) $this->imgwidth=$this->img_size[0];
if($this->img_size[1]imgheight) $this->imgheight=$this->img_size[1];
}else{
$this->imgwidth=$this->img_size[0]*$this->imgpreviewsize;
$this->imgheight=$this->img_size[1]*$this->imgpreviewsize;
}
$this->img_preview_display=destination width='$this->imgwidth' height=$this->imgheight> alt=图片预览:r文件名:$this->file_tmp_name />;
}
//====================================================================================================================
//====================================================================================================================
//生成略缩图功能
function imgthu(){
if($this->imgthu_folder==null)
$this->imgthu_folder=$this->destination_folder;
//$this->imgthu_name=$this->filename._t..$this->file_extension;
$imgthu_name_b=$this->filename._t;
$imgthu_name_b2=$this->filename._t;
$destination_b=$this->imgthu_folder.$imgthu_name_b...$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 = $this->imgthu_folder.$imgthu_name_b...$this->file_extension;
}
$imgthu_name_b=$imgthu_name_b2.(.$n.);
$destination_b = $this->imgthu_folder.$imgthu_name_b...$this->file_extension;
}
$imginfo=getimagesize($this->destination);
switch($imginfo[2])
{
case 1:
$in=@imagecreatefromgif($this->destination);
break;
case 2:
$in=@imagecreatefromjpeg($this->destination);
break;
case 3:
$in=@imagecreatefrompng($this->destination);
break;
case 6:
$in =@imagecreatefrombmp($this->destination);
break;
default:
break;
}
//计算略缩图长宽
if($this->imgthu_fixed==0){
if($this->imgthu_height>($imginfo[1]/$imginfo[0])*$this->imgthu_width)
$this->imgthu_width = ($imginfo[0]/$imginfo[1])*$this->imgthu_height;
else
$this->imgthu_height=($imginfo[1]/$imginfo[0])*$this->imgthu_width;
}
$new = imagecreatetruecolor($this->imgthu_width,$this->imgthu_height);
imagecopyresized($new,$in,0,0,0,0,$this->imgthu_width,$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($this->destination);
$im=imagecreatetruecolor($this->img_size[0],$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($this->destination); // 创建一个新的形象,从文件或 url
break;
case 2:
$simage =imagecreatefromjpeg($this->destination);
break;
case 3:
$simage =imagecreatefrompng($this->destination);
break;
case 6:
$simage =imagecreatefromwbmp($this->destination);
break;
default:
echo (不支持的文件类型);
break;
}
if(!empty($simage))
{
//位置设置
if($this->watertype==1){
$str_len=strlen($this->waterstring);
$str_width=$str_len*10;
$str_height=20;
}elseif($this->watertype==1 && file_exists($this->waterimg)){
$iinfo=getimagesize($this->waterimg);
$str_width = $iinfo[0];
$str_height = $iinfo[1];
}
switch ($this->waterposition){
case 1:
$p_x=5;
$p_y=$this->img_size[1]-$str_height;
break;
case 2:
$p_x=$this->img_size[0]-$str_width;
$p_y=$this->img_size[1]-$str_height;
break;
case 3:
$p_x=5;
$p_y=0;
break;
case 4:
$p_x=$this->img_size[0]-$str_width;
$p_y=5;
break;
case 5:
$p_x=($this->img_size[0]-$str_width)/2;
$p_y=($this->img_size[1]-$str_height)/2;
break;
}
imagecopy($im,$simage,0,0,0,0,$this->img_size[0],$this->img_size[1]); //拷贝图像的一部分
//imagefilledrectangle($im,1,$this->img_size[1]-15,130,$this->img_size[1],$white); //将图片的封闭长方形区域着色
switch($this->watertype)
{
case 1: //加水印字符串
imagestring($im,10,$p_x,$p_y,$this->waterstring,$red);
break;
case 2: //加水印图片
$simage1 =imagecreatefromgif($this->waterimg);
imagecopy($im,$simage1,0,0,0,0,85,15);
imagedestroy($simage1);
break;
}
switch ($imginfo[2])
{
case 1:
//imagegif($nimage, $destination);
imagejpeg($im, $this->destination);
break;
case 2:
imagejpeg($im, $this->destination);
break;
case 3:
imagepng($im, $this->destination);
break;
case 6:
imagewbmp($im, $this->destination);
break;
}
//覆盖原上传文件
imagedestroy($im);
imagedestroy($simage);
}
}
}
?>
http://www.bkjia.com/phpjc/444727.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/444727.htmltecharticle分享一个网友写的php图片上传类,支持加水印,生成略缩图功能哦,面是配置和可以获取的一些信息(每一个配置信息都有默认值,如无特殊...
