/*------ -------------------------------------------------- -------------------------- * *----------------- -------------------------------------------------- --------------- */ class image_up{ //Define basic parameters private $uptype=array('image/jpg',' image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png'); //Upload file type private $max_file_size= 102400; //Upload size limit (unit: KB) private $destination_folder="up/"; //Upload file path private $watermark=1; //Whether to attach a watermark private $watertype= 1; // Watermark type (1 is text, 2 is picture) private $waterposition=1; to center); private $waterstring=null; //Watermark string private $waterimg=null; , others are not generated); private $imgpreviewsize=1; //Preview ratio, 0 is displayed according to fixed width and height, others are displayed proportionally private $imgwidth=200; //Preview fixed width private $imgheight=200; //Preview fixed height //++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++ private $imgthu=1; //Whether to generate and save Thumbnails, 1 means generated, 0 means not generated private $imgthu_folder=null; //Thumbnail saving path, the default is the same as the file path private $imgthu_fixed=0; Bid -high, 1 is used, 0 is flexible change Private $ Imgthu_width = 200; // The width of the slightly shrinkage Private $ Imgthu_height = 200; // Summary diagram height Private $ Imgthu_name =null; //Thumbnail name //************************************ *************************************************** ****************************** private $inputname="upfile"; //File upload box name // *************************************************** *************************************************** **************** private $img_preview_display; //Image preview display //****************** *************************************************** ************************************************ / /File upload related information, 1 means the file does not exist, 2 means the type does not match, 3 means the size limit is exceeded, 4 means the upload failed, 0 means the upload was successful private $file_up_info=null; //+++ ++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++ //The basic information of the uploaded file can be obtained externally private $file_name; //The original name of the client file private $file_type; MIME type private $file_size; //Size of uploaded file, unit/byte private $file_tmp_name; //Stored temporary file name private $file_error; //Error code related to file upload private $img_size; // Get the length and width of the image private $file_basename; // Get the full name with extension private $file_extension; // Get the file extension private $filename; //File name (without extension) private $destination; //Ask price path plus name //********************** *************************************************** ******************************************* public function __set( $propety_name,$value){ $this->$propety_name=$value; } public function __get($property_name){ if(isset($this->$property_name )) return($this->$property_name); else return(NULL); } //**************** *************************************************** ************************************************ //Define the file upload function public function up(){ //Judge whether the file exists if(!is_uploaded_file($_FILES[$this->inputname]["tmp_name"])) { $this->file_up_info=1; return; } //Get and assign the corresponding basic parameters $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"]; //Check whether the file type matches if(!in_array($this->file_type,$this->uptype)){ $this->file_up_info=2; return; } // Check if the file size exceeds the limit if($this->file_size>$this->max_file_size){ $this->file_up_info=3; return; } //Determine whether the directory exists if(!file_exists($this->destination_folder)) mkdir($this->destination_folder); //Further obtain the image information and assign the value $this->img_size=getimagesize($this->file_tmp_name); $pathinfo=pathinfo($this->file_name); $this->file_extension=$pathinfo["extension"] ; //Get the file extension $this->file_basename=$pathinfo["basename"]; //Get the full name with extension $this->filename=$pathinfo["filename" ; ".".$this->file_extension; //Determine whether the file name exists, if it exists, rename it $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; } //Move the uploaded file if(move_uploaded_file($this->file_tmp_name,$this->destination)) $this->file_up_info=0; else $this->file_up_info=4; //Add watermark if($this->watermark==1){ $this->imgthu(); } //Generate thumbnail image if($this->imgthu==1){ $this->add_watermark(); } //Generate preview image if($this->imgpreviewsize == 0){ if($this->img_size["0"]<$this->imgwidth) $this->imgwidth=$this ->img_size["0"]; if($this->img_size["1"]<$this->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=" 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]); //Create true color $white=imagecolorallocate($im,255,255,255); ,0); //Perform area filling with color at the coordinates x, y of the image (the upper left corner of the image is 0, 0) (that is, points with the same color as the x, y points and adjacent points will be filled ). imagefill($im,0,0,$white);
switch($imginfo[2]) { case 1: $simage =imagecreatefromgif($this ->destination); // Create a new image from a file or 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 ("Unsupported file type"); break; } if(!empty($simage)) { //Position setting 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; 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]); //Copy the image Part of //imagefilledrectangle($im,1,$this->img_size[1]-15,130,$this->img_size[1],$white); //Color the closed rectangular area of the image
switch($this->watertype) { case 1: //Add watermark string imagestring($im,10,$p_x,$p_y,$this-> ;waterstring,$red); break; case 2: //watermark image $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; } //Overwrite the original uploaded file imagedestroy($im); imagedestroy($simage); } } } ?>
|