티스토리 뷰

PHP 이미지 업로드 가로 세로 사이즈 변경



HTML




PHP 처리단


<?php

//JPG 이미지 만드는 함수

function fn_imagejpeg($image,$upload_file,$new_file_width,$new_file_height,$width, $height,$new_quality) {

   $tmpCreation = imagecreatetruecolor($new_file_width, $new_file_height);

   imagecopyresampled($tmpCreation, $image, 0, 0, 0, 0, $new_file_width, $new_file_height, $width, $height);

   imagejpeg($tmpCreation, $upload_file, $new_quality);


   // 원본 이미지 리소스 종료

    imagedestroy($tmpCreation);    

}



$upload_dir = $_SERVER['DOCUMENT_ROOT']."/test/";

$upload_file = $upload_dir."new_file_name.jpg";


$file_source         = $_FILES['upload_file']['tmp_name']; //파일명

$file_ext = array_pop(explode('.',$_FILES['upload_file']['name'])); //확장자 추출 (array_pop : 배열의 마지막 원소를 빼내어 반환)

$file_info = getimagesize($_FILES['upload_file']['tmp_name']);

$file_width = $file_info[0]; //이미지 가로 사이즈

$file_height         = $file_info[1]; //이미지 세로 사이즈

$file_type = $_FILES['upload_file']['type'];


$check_ext = array('jpg','jpeg','png','gif'); //확장자 체크를 위한 선언부

if (!in_array($file_ext, $check_ext)){

echo "허용되지 않는 확장자입니다";

exit;

}

$new_file_width = 550; //이미지 가로 사이즈 지정

$rate = $new_file_width/$file_width; //이미지 세로 사이즈 및 파일 사이즈(quality) 조절을 위한 비율 

$new_file_height = (int)($file_height*$rate); 

$new_quality = (int)($_FILES['upload_file']['size']*$rate);

if ($file_width > $new_file_width ){ //이미지 가로사이즈가 550보다 크면 사이즈 조절

switch($file_type){

case "image/jpeg" :

$image = imagecreatefromjpeg($file_source);

break;

case "image/gif" :

$image = imagecreatefromgif($file_source);

break;

case "image/png" :

$image = imagecreatefrompng($file_source);

break;

default:

$image = "";

break;

}

if ($image != ""){

   fn_imagejpeg($image, $upload_file,$new_file_width, $new_file_height,$file_width,$file_height,$new_quality);

}

}else{

move_uploaded_file($_FILES['file']['tmp_name'], $upload_file);

}

/*

echo "image : " . $image."<br>";

echo "file_source : " . $file_source."<br>";

echo "file_ext : " . $file_ext."<br>";

echo "file_width : " . $file_width."<br>";

echo "file_height : " . $file_height."<br>";

echo "file_type : " . $file_type."<br>";

echo "rate : " . $rate."<br>";

echo "new_file_width : " . $new_file_width."<br>";

echo "new_file_height : " . $new_file_height."<br>";

echo "new_quality : " . $new_quality."<br>";

*/

?>


예제한 사용한 소스 파일입니다


test_upload.php

test_upload.html





만일 GD 오류가 발생된다면


echo phpinfo(); 를 통해 아래와 같이 GD Support : enabled 로 설정되어 있는지 확인 합니다


enabled가 아닌 경우는 php.ini 수정 및 GD 라이브러리 설치가 필요합니다.



반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday