- /**
- * 사진 업로드
- */
- class imgUpload{
- static protected $a;
- protected $formName; 양식 이름
- protected $directory; //디렉토리에 파일 업로드
- protected $maxSize; //최대 파일 업로드 크기
- protected $canUpload; //업로드 가능 여부
- protected $doUpFile; /업로드 파일 이름
- protected $sm_File; //썸네일 이름
-
- 비공개 함수 __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'];
- 스위치 ($ _type){
- case 'image/gif':
- if (self::$a==NULL)
- self::$a = new imgUpload($_formName);
- break;
- 케이스 '이미지/pjpeg':
- if (self::$a==NULL)
- self::$a = new imgUpload($_formName);
- break;
- 케이스 ' image/ x-png':
- if (self::$a==NULL)
- self::$a = new imgUpload($_formName);
- break;
- 기본값:
- 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;
- }
- 스위치($_format){
- 케이스 'B':
- return $_FILES[$this- >formName ]['size'];
- break;
- case 'K':
- return round($_FILES[$this->formName]['size'] / 1024);
- break;
- 케이스 'M':
- return round($_FILES[$this->formName]['size'] / (1024*1024),2);
- break;
- }
- }
- }
-
- //파일 형식 가져오기
- public function getExt(){
- if ($this->canUpload) {
- $_name = $ _FILES[$this ->formName]['name'];
- $_nameArr = 폭발('.',$_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;
- }
- }
- }
-
- //创建缩略图
- 공개 함수 Thumb($_dstChar=' _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 = ''; //目标图 Images高
-
- //宽高按比例缩放,最长边不大于$_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;
- }
- else
- {
- $dst_h = $_max_len;
- $dst_w = $percent * $dst_h;
- }
- }
- else
- {
- $dst_w = $src_w; //判断如果缩略图用于logo,将对其进行裁减
- if ('s_' == $_dstChar) {
- $src_x = $src_w * 0.10;
- $src_y = $src_h * 0.10;
- $src_w *= 0.8;
- $src_h *= 0.8;
- }
-
- //判断图文类型并创建对应新图文
- 스위치($_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);
- }
-
- //이 이미지의 썸네일 복사
- // $bg = imagecolorallocate($dst_im,255,255,0);
- imagecopyreized($dst_im,$src_im, 0, 0, $ src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h );
- //이미지 앤티앨리어스
- imageantialias($dst_im, true);
-
- 스위치($_date [2] ) {
- 사례 1:
- $cr = imagegif($dst_im, $this->directory.$this->doUpFile.$_dstChar.".".$_ext, 100);
- break ;
- 사례 2:
- $cr = imagejpeg($dst_im, $this->directory.$this->doUpFile.$_dstChar.".".$_ext, 100);
- break;
- 케이스 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;
- }
- }
-
- / /Get 업로드된 파일의 전체 경로
- 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;
- }
- }
- }
- ?>
코드 복사
|