-
/**
- * 上傳圖片
- */
- class imgUpload{
- static protected $a;
- protected $formName; //表單名稱
- protected $directory; //檔案上傳至目錄
- protected $maxSize; //最大檔案上傳大小
- protected $canUpload; //是否可以上傳
- protected $doUpFile; //上傳的檔案名稱
- protected $sm_File; //縮圖名稱
-
- private function __construct($_formName='file', $_directory='./images/uploads/', $_maxSize=1048576){ / /1024*1024=1M
- //初始化參數
- $this->formName = $_formName;
- $this->directory = $_directory;
- $this->maxSize = $_maxSize
- $this->canUpload = true;
- $this->doUpFile = '';
- $this->sm_File = '';
- }
-
- //判斷圖片是否屬於允許格式內
- static public function Type($_formName='file'){
- $_type = $_FILES[$_formName]['type'];
- switch ($_type){
- case 'image/gif':
- if (self::$a==NULL)
- self::$a = new imgUpload($_formName);
- break;
- case 'image/pjpeg' :
- if (self::$a==NULL)
- self::$a = new imgUpload($_formName);
- break;
- case 'image/x-png':
- if (self::$a==NULL)
- self::$a = new imgUpload($_formName);
- break;
- default:
- self::$a = false;
- }
- return self::$a;
- }
-
- //取得檔案大小
- public function getSize($_format='K'){
- if ($this ->canUpload) {
- if (0 == $_FILES[$this->formName]['size']) {
- $this->canUpload = false;
- return $this->canUpload;
- break;
- }
- switch ($_format){
- case 'B':
- return $_FILES[$this->formName]['size'];
- break;
- case 'K':
- return round($_FILES[$this->formName]['size'] / 1024);
- break;
- case 'M':
- return round ($_FILES[$this->formName]['size'] / (1024*1024),2);
- break;
- }
- }
- }
-
- }
- }
- }
-
- //取得檔案類型
- public function getExt(){
- if ($this->canUpload) {
- $_name = $_FILES[$this->formName]['name'];
- $_nameArr = explode('.',$_name);
- $_count = count($_nameArr)-1;
- }
- return $_nameArr[$_count];
- }
-
- //取得檔案名稱
- public function getName(){
- if ($this->canUpload) {
- return $_FILES[$this->formName]['name'];
- }
- }
-
- //新檔案名稱
- public function newName(){
- return date('YmdHis').rand(0,9);
- }
-
- //上傳檔案
- public function upload(){
- if ($this->canUpload)
- {
- $_getSize = $this->getSize('B');
- if (!$_getSize) { return $_getSize; break; }
- else
- {
- $_newName = $this->newName();
- $_ext = $this->getExt();
- $_doUpload = move_uploaded_file($_FILES[$ this- >formName]['tmp_name'], $this->directory.$_newName.".".$_ext);
- if ($_doUpload)
- {
- $this->; doUpFile = $_newName ;
- }
- return $_doUpload;
- }
- }
- }
-
- //建立小心
- public functionthumb($_dstChar=' _m', $max_len=m', $max_len= 320){ //$_dstChar:_m , _s
- if ($this->canUpload && $this->doUpFile != "") {
- $_ext = $this- >getExt();
- $_srcImage = $this->directory.$this->doUpFile.".".$_ext;
-
- //取得圖片資訊流量
- $_date = getimagesize($_srcImage, &$info);
-
- $src_w = $_date[0]; //來源圖片寬
- $src_h = $_date[1]; //來源圖片高
- $src_max_len = max($src_w, $src_h ); //求長邊
- $src_min_len = min($src_w, $src_h); //求短邊
- $dst_w = ''; //目標圖片寬
- $dst_h = ' '; //目標圖
-
- //寬高依縮放比例,寬度不大於$_max_len
- if ($src_max_len>$_max_len)
- {
- $percent = $src_min_len / $ src_max_len;
- if ($src_w == $src_max_len)
- {
- $dst_w = $_max_len;
- $dst_h = $percent * $dst_w;
- }
- {
- $dst_h = $_max_len;
- $dst_w = $percent * $dst_h;
- }
- }
- else
- {
- $dst_w = $srcww; $dst_h = $src_h;
- }
-
- //建立了幾個時間、來源圖片的位置
- $src_x = '';
- $src_y = '';
-
- //判斷如果要用於logo,則對其進行裁減
- if ('s_' == $_dstChar) {
- $src_x = $src_w * 0.10;
- $src_y = $src_h * 0.10;
- $src_w *= 0.8;
- $src_h *= 0.8;
- }
-
- //判斷圖片類型並建立對應新圖片
- switch ($_date[2 ] ){
- 情況1:
- $src_im = imagecreatefromgif($_srcImage);
- 中斷;
- 情況2:
- $src_im = imagecreatefromjpeg($srcImage); > 案例3:
- $src_im = imagecreatefrompng($_srcImage);
- 中斷;
- 案例8:
- $src_im = imagecreatefromwbmp($_srcImage);
- //建立一張新圖片
- if ($_date[2]==1) { //gif 無法套用imagecreatetruecolor
- $dst_im = imagecreate($dst_w, $dst_h);
- }else {
- $dst_im = imagecreatetruecolor($dst_w, $dst_h);
- }
-
- //對這副圖像進行縮圖copy
- // $bg = imagecolorallocate($dst_im,255,255,0);
- imagecopyresized($dst_im,$src_im,$src0, $0, $0, $ src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h );
- //對圖片進行抗鋸齒操作
- imageantialias($dst_im, true);
- case 1:
- $cr = imagegif($dst_im, $this->directory.$this->doUpFile.$_dstChar.".".$_ext, 100);
- break;
- case 2:
- $cr = imagejpeg($dst_im, $this->directory.$this->doUpFile.$_dstChar.".".$_ext, 100);
- break;
- case 3://imagepng有問題,所以在這裡用imagejpg代替
- $cr = imagejpeg($dst_im, $this->directory.$this->doUpFile.$_dstChar.".".$_ext, 100);
- break;
- }
- // $cr = imagejpeg($dst_im, $this->directory.$_dstChar.$this->doUpFile, 90);
- if ($cr ) {
- $this->sm_File = $this->directory.$this->doUpFile.$_dstChar.".".$_ext;
-
- return $this->sm_File;
- } else {
- return false;
- }
- }
- imagedestroy($dst_im);
- imagedestroy($cr);
- }
-
- //得到上傳後的檔名
- public function getUpFile(){
- if ($this->doUpFile!='') {
- $_ext = $this->getExt();
- return $this->doUpFile .".".$_ext;
- }else {
- return false;
- }
- }
-
- //得到上傳後的檔案全路徑
- public function getFilePatch( ){
- if ($this->doUpFile!='') {
- $_ext = $this->getExt();
- return $this->directory.$this->doUpFile.". ".$_ext;
- }else {
- return false;
- }
- }
-
- //得到縮圖檔案全路徑
- public function getThumb(){
- if ($this->sm_File!='') {
- return $this->sm_File;
- }else {
- return false;
- }
- }
- //得到上傳檔案的路徑
- public function getDirectory(){
- if ($this->directory!='') {
- return $this->directory;
- }else {
- return false ;
- }
- }
- }
- ?>
-
複製程式碼
|