/*----------------- ---------------------------------------------------- --------------- --- * *---------------------------- --------------------- ---------------------------- ---------- */ 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) destination_folder="up/"; //アップロードファイルパス private $watermark=1; // ウォーターマークを付けるかどうか private //ウォーターマークの種類(1はテキスト、2は画像) =1; 4 は右上隅、5 は中央); private $waterstring=null; // 固定の高さをプレビューします。 ++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++プライベート$ imgthu_folder = null;縮小は固定幅の高さに使用され、1 は柔軟な変更です imgthu_width=200; //サムネイルの幅 private $imgthu_name=null; ****************************************** ******** ******************************************* **** プライベート $ 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 $filename; extension) Name) private $destination; //価格問い合わせパスに名前を追加 //***************************** ****** ******************************************* ******* ******************************** public function __set($propety_name,$value){ $this->$ property_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"]; // ファイルがあるかどうかを確認しますtypematches 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; //Add Watermark if($this->watermark==1){ $this->imgthu(); } //サムネイル画像を生成 if($this->imgthu==1){ $this ->add_watermark(); } //プレビュー画像を生成 if($this->imgpreviewsize == 0){ if($this->img_size["0"]<$this-> 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=" 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; ケース 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->gt; 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); ImageCopyResize($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; ケース 2: imagejpeg($new,$destination_b); break; ケース 3: imagepng($new,$destination_b); break; ケース 6: imagewbmp($new,$destination_b); 休憩。 } } //========================================== ================================================= ======================= //======================== ================================================= ========================================== //追加水印機能 機能add_watermark(){ //1 = GIF、2 = JPG、3 = PNG、4 = SWF、5 = PSD、6 = BMP、7 = TIFF (インテル バイト オーダー)、 //8 = TIFF (モトローラ バイト オーダー)、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= ImageColoraLocate ($ im, 255,255,255); // カラーを設定します $ Black = ImageColoraCate ($ im, 0,0,0) I // 画像のカラー color を使用して、座標 x と y で領域を塗りつぶします (画像の左上隅は 0, 0) (つまり、x 点と y 点と同じ色の点と隣接する点が塗りつぶされます)。 imagefill($im,0,0,$white);
switch($imginfo[2]) { case 1: $simage =imagecreatefromgif($this->destination); // 新しいものを作成しますファイルまたは URL からの画像 ブレーク; ケース 2: $simage =imagecreatefromjpeg($this->destination); ブレーク; ケース 3: $simage =imagecreatefrompng($this->destination); ブレーク; ケース 6: $simage =imagecreatefromwbmp($this->destination); Break; デフォルト: 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; ブレーク; ケース 2: $p_x=$this->img_size[0]-$str_width; $p_y=$this->img_size[1]-$str_height; ケース 3: $p_x=5 ; $p_y=0; ブレーク; ケース 4: $p_x=$this->img_size[0]-$str_width; $p_y=5; ブレーク; ケース 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 : //ウォーターマーク文字列を追加します use using using using using through out through out through out through through through through ' s to ‐ to ‐‐‐‐‐‐ and ($this->waterimg); Imagecopy($ im,$simage1,0,0,0,0,85,15); imagedestroy($simage1); ブレーク; }
switch ($imginfo[2]) { case 1: //imagegif($nimage, $destination); imagejpeg($im, $this->destination); Break; case 2: imagejpeg ($im, $this->destination); ブレーク; ケース 3: imagepng($im, $this->destination); ブレーク; ケース 6: imagewbmp($im, $this-> );
http://www.bkjia.com/PHPjc/444727.html
www.bkjia.com
本当
http://www.bkjia.com/PHPjc/444727.html |
技術記事