티스토리 뷰
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>";
*/
?>
예제한 사용한 소스 파일입니다
만일 GD 오류가 발생된다면
echo phpinfo(); 를 통해 아래와 같이 GD Support : enabled 로 설정되어 있는지 확인 합니다
enabled가 아닌 경우는 php.ini 수정 및 GD 라이브러리 설치가 필요합니다.
'프로그래밍 > php' 카테고리의 다른 글
PHP http로 접속 시 https로 접속 변경(리다이렉트) (0) | 2019.01.16 |
---|---|
[PHP] 현재폴더(디렉토리)명 추출 (0) | 2019.01.14 |
[PHP] 순수 파일명 추출 (0) | 2019.01.14 |
그누보드 COMMON.PHP 에러 및 해결방법 (0) | 2019.01.14 |