알찬정보 툰코 개발 트렌드 이슈 코딩

알찬정보 툰코 개발 트렌드 이슈 코딩

  • php 이미지 사이즈 줄인 후 업로드

    hellowsydney8010

    2023년 12월 14일
    개발지식, 미분류, 생활지식
    php 이미지 사이즈 줄인 후 업로드

    php 이미지 사이즈 줄인 후 업로드 하는 방법을 알아보겠습니다.
    크기가 큰 이미지 파일이 넘어오는 경우에는 용량을 줄여야 서버에 보관하기도 쉽고,
    다른 파일에서 열어볼 때도 시간 지연 없이 열어 볼 수 있기 때문에 줄이는 경우가 많습니다.

    php 는 이미지를 업로드 할 때, 임시 파일에 들어있다가 업로드를 하는 방식을 사용합니다.
    이미지를 업로드 할 때 임시 파일에 있는 파일을 바로 사이즈를 줄여서 업로드 하는 방법과
    이미지를 일단 업로드 하고, 그 폴더에 있는 파일을 사이즈를 줄이는 경우가 있습니다.

    <form enctype="multipart/form-data" action="imageUpload.php" method="POST">
      <input name="mainImgInput" class="input" type="file" id="mainImgInput" />
      <input type="submit" value="upload" />
    
    
    
    <? 
        // 설정
        $uploads_dir = 'userImages/test';
        $allowed_ext = array('jpg','jpeg','png','gif');
     
        // 폴더 존재 여부 확인 ( 없으면 생성 ) 
        if ( !is_dir ( $uploads_dir ) ){
            mkdir( $uploads_dir );
        }
         
        // 변수 정리
        $error = $_FILES['mainImgInput']['error'];
        $name = $_FILES['mainImgInput']['name'];
        $ext = array_pop(explode('.', $name));
         
        // 오류 확인
        if( $error != UPLOAD_ERR_OK ) {
            switch( $error ) {
                case UPLOAD_ERR_INI_SIZE:
                case UPLOAD_ERR_FORM_SIZE:
                    echo "파일이 너무 큽니다. ($error)";
                    break;
                case UPLOAD_ERR_NO_FILE:
                    echo "파일이 첨부되지 않았습니다. ($error)";
                    break;
                default:
                    echo "파일이 제대로 업로드되지 않았습니다. ($error)";
            }
            exit;
        }
         
        // 확장자 확인
        if( !in_array($ext, $allowed_ext) ) {
            echo "허용되지 않는 확장자입니다.";
            exit;
        }
         
        // 파일 업로드
        move_uploaded_file( $_FILES['mainImgInput']['tmp_name'], "$uploads_dir/$name");
     
        // 파일 정보 출력
        echo "
            <h2>파일 정보</h2>
            <p>파일명: $name</p>
            <p>확장자: $ext</p>
            <p>파일형식: {$_FILES['mainImgInput']['type']}</p>
            <p>파일크기: {$_FILES['mainImgInput']['size']} 바이트</p>
            ";
     
     
        // 파일 압축 메소드 
        function compress($source, $destination, $quality) {
     
            $info = getimagesize($source);
     
            if ($info['mime'] == 'image/jpeg') 
                $image = imagecreatefromjpeg($source);
     
            elseif ($info['mime'] == 'image/gif') 
                $image = imagecreatefromgif($source);
     
            elseif ($info['mime'] == 'image/png') 
                $image = imagecreatefrompng($source);
     
            imagejpeg($image, $destination, $quality);
     
            return $destination;
        }
     
        // 파일 리사이즈 후 복사하기
        $source_img = $_FILES['mainImgInput']['tmp_name'];
        $destination_img = $_FILES['mainImgInput']['tmp_name'];
        $d = compress($source_img, $destination_img, 90);
     
    ?>
    
    dev, 개발, 개발자, 개발정보, 스크립트, 웹개발
    다음
    이전

    답글 남기기 응답 취소

    이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Subscribe to Our Newsletter!

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Subscribe Now

Copyright © 2023 Sydney Note

Design by ThemesDNA.com