이 PHP 이미지 업로드 기능은 매우 완벽하며 다양한 이미지 업로드 요구 사항을 완벽하게 충족할 수 있습니다
- /**************************************
- 시소동료 | http://seesaw.net
-
- 클라이언트:
- 파일:
- 설명:
-
- Copyright (C) 2008 Matt Kenefick(.com)
- ***** *********************************/
-
- class mk_imageUpload{
-
- var $max_size;
- var $allowed_types;
- var $thumb_height;
- var $dest_dir;
- var $extensions;
- var $max_height;
- var $max_main_height;
-
- var $last_ext;
- var $last_pid;
- var $last_uid;
-
- var $image_file;
- var $image_field;
-
- function __construct( $maxHeightMain, $maxHeightThumb, $destDir ){
- $this->max_size = (1024/2)*1000; // 750kb
- $this->allowed_types = array( 'jpeg', 'jpg', 'pjpeg', 'gif', 'png' );
- $this->extensions = array(
- '이미지/jpeg' => '.jpg',
- '이미지/gif' => '.gif',
- '이미지/png' => image/x-png' => '.png',
- 'image/pjpeg' => '.jpg'
- );
- $this->dest_dir = $destDir;
- $this->max_height = $maxHeightThumb;
- $this->max_main_height = $maxHeightMain;
- }
-
- function putImage( $formname, $newName ){
- $this-> ;image_field = $formname;
- if( $this->getImage() ){
-
- // 오류 확인
- if ( !$this->checkType() )
- return $this->throwError(2);
-
- if ( !$this->checkFileSize() )
- return $this->throwError(1);
-
-
- // 이미지 가져오기
- $img = $this->image_file;
-
- // 점유 확인
- if ( !$this->checkImageSize() )
- return $this ->throwError(3);
-
- // 이미지 크기 가져오기
- $size = $this->getImageSize();
- $size['width'] = $size[0] ;
- $size['height'] = $size[1];
- $ratio = $this->max_height/$size['height'];
-
- $maxheight = $this ->max_height;
- $maxwidth = $size['width'] * $ratio;
-
- // 썸네일 생성
- $s_t = $this->resizeImage( $size, $img , $maxwidth, $maxheight,$newName,'s' );
-
- if( $size['height'] > $this->max_main_height ){
- $ratio = $this->max_main_height/$size['height'];
- $maxheight = $this->max_main_height;
- $maxwidth = $size ['너비'] * $ratio;
- }else{
- $maxheight = $size['height'];
- $maxwidth = $size['width'];
- }
-
- // 대규모 재조정 생성
- $s_l = $this->resizeImage( $size, $img, $maxwidth, $maxheight,$newName,'l' );
-
- // 제거 임시 파일
- unlink($img['tmp_name']);
-
- if( $s_t && $s_l ){
- $nm = Split('_',$newName);
- $this->last_ext = $this->extensions[$size['mime']];
- $this->last_pid = $nm[0];
- $this->last_uid = $ nm[1];
- return 'ok';
- }else{
- return $this->throwError( 4 );
- }
- }else{
- return $this->throwError( 2 );
- }
- }
-
- 함수 resizeImage($size,$img,$maxwidth, $maxheight,$newName,$ext){
- // 썸네일 생성
- if($size['mime'] == "image/pjpeg" || $size['mime'] == "image /jpeg"){
- $new_img = imagecreatefromjpeg($img['tmp_name']);
- }elseif($size['mime'] == "image/x-png" || $size[' mime'] == "이미지/png"){
- $new_img = imagecreatefrompng($img['tmp_name']);
- }elseif($size['mime'] == "이미지/gif") {
- $new_img = imagecreatefromgif($img['tmp_name']);
- }
-
- if (function_exists('imagecreatetruecolor')){
- $resize_img = imagecreatetruecolor($maxwidth,$ maxheight);
- }else{
- return("오류: 서버에 GD 라이브러리 버전 2가 있는지 확인하세요. ");
- }
-
- imagecopyreized($resize_img, $new_img, 0, 0, 0, 0, $maxwidth, $maxheight, $size['width'], $size['height']);
- if( $size['mime'] == "이미지/pjpeg" || $size['mime'] == "이미지/jpeg"){
- $success = ImageJpeg ($resize_img,$this->dest_dir. $newName.'_'.$ext.$this->extensions[$size['mime']]);
- }elseif($size['mime'] == "이미지/x-png" | | $size['mime'] == "이미지/png"){
- $success = ImagePNG ($resize_img,$this->dest_dir.$newName.'_'.$ext.$this-> Extensions[$size['mime']]);
- }elseif($size['mime'] == "image/gif"){
- $success = ImageGIF ($resize_img,$this-> dest_dir.$newName.'_'.$ext.$this->extensions[$size['mime']]);
- }
-
- // 임시 이미지 제거
- ImageDestroy ($ resize_img);
- ImageDestroy($new_img);
-
- return $success;
- }
-
- function getImage(){
- if( isset($_FILES[$this- >image_field]) && is_uploaded_file($_FILES[$this->image_field]['tmp_name']) ){
- $this->image_file = $_FILES[$this->image_field];
- return true;
- }
- return false;
- }
-
- 함수 returnImg(){
- return $this->image_file;
- }
-
- 함수 getImageSize(){
- $img = $this->returnImg();
-
- return getimagesize($img['tmp_name']);
- }
-
- 함수 checkImageSize( ){
- $size = $this->getImageSize();
-
- if( $size[1] < $this->max_height )
- return false;
- return true;
- }
-
- function checkFileSize(){
- $img = $this->returnImg();
-
- if( $img['size'] > $this->max_size )
- return false;
- return true;
- }
-
- function checkType(){
- $img = $this->returnImg();
-
- $type = Split('/',$img['type']);
- if( !in_array( $type[ 1], $this->allowed_types ) )
- false 반환;
- true 반환;
- }
-
- 함수 throwError($val){
- switch($val){
- 사례 1: return '오류: 파일 크기가 너무 큼';
- break;
- 사례 2: return '오류: 부적절한 파일 형식';
- break;
- 사례 3: return '오류 : 이미지가 너무 작습니다.';
- break;
- 사례 4: return '오류: 이미지를 생성하는 동안 오류가 발생했습니다.';
- break;
- }
- }
-
- }
-
- ?>
复代码
|