PHP
29. PHP 이미지 파일 용량 줄이기
drizzle0925
2021. 4. 22. 14:30
728x90
이미지 업로드 파일
image_resize.php
<form enctype='multipart/form-data' action='upload_file.php' method='post'>
<input type='file' name='myfile'>
<button>보내기</button>
</form>
출력 화면
업로드된 이미지 처리 파일
upload_file.php
<?php
// 파일 압축하기
$uploads_dir = './uploads';
$allowed_ext = array('jpg','jpeg','png','gif');
// 변수 정리
$error = $_FILES['myfile']['error'];
$name = $_FILES['myfile']['name'];
$ext = explode('.', $name);
$ext = array_pop($ext);
// 오류 확인
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;
}
$url = './uploads/destination1.jpg';
$filename = compress($_FILES["myfile"]["tmp_name"], $url, 80);
$buffer = file_get_contents($url);
// 파일 이동
move_uploaded_file( $_FILES['myfile']['tmp_name'], "$uploads_dir/$name");
// 파일 정보 출력
echo "<h2>파일 정보</h2>
<ul>
<li>파일명: $name</li>
<li>확장자: $ext</li>
<li>파일형식: {$_FILES['myfile']['type']}</li>
<li>파일크기: {$_FILES['myfile']['size']} 바이트</li>
</ul>";
// 파일 압축 메소드
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;
}
?>
출력 화면
uploads 폴더 내용
이미지 품질을 80으로 맞춰놓고 272kb 파일을 업로드 시 55kb까지 감소 (약 80% 감소)
좌: 55KB, 우 272KB
32.4MB 파일을 업로드시 4.33MB까지 감소
좌: 4.3MB, 우: 33MB (약 87% 감소)
728x90