[php] PHP에서 파일 업로드를 사용한 이미지 리사이징
이미지 파일을 웹 애플리케이션에 업로드할 때, 이미지의 크기를 변환하여 저장하는 일은 흔한 일입니다. PHP를 사용하여 파일 업로드 및 이미지 리사이징 기능을 구현하는 방법에 대해 알아봅시다.
1. 파일 업로드 처리
가장 먼저, HTML 폼을 생성하여 사용자로부터 이미지 파일을 업로드합니다.
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit" value="Upload Image">
</form>
위의 코드에서 enctype="multipart/form-data"
는 파일 업로드를 지원하기 위해 폼 데이터 인코딩을 설정하는 부분입니다.
그런 다음, 업로드 된 이미지를 처리하는 PHP 스크립트를 작성합니다.
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["image"]["name"]);
move_uploaded_file($_FILES["image"]["tmp_name"], $target_file);
echo "The file ". basename( $_FILES["image"]["name"]). " has been uploaded.";
?>
위의 PHP 코드에서 move_uploaded_file
함수는 임시 디렉토리에 저장된 업로드된 파일을 지정된 디렉토리로 이동시킵니다. 그리고 성공적으로 파일이 업로드되었음을 메시지로 알립니다.
2. 이미지 리사이징
이제, 업로드된 이미지 파일을 리사이징하는 PHP 코드를 추가합시다. 여기서는 GD 라이브러리
를 사용하여 이미지를 리사이징합니다.
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["image"]["name"]);
// 이미지 리사이징
list($width, $height) = getimagesize($target_file);
$new_width = 100;
$new_height = ($height / $width) * $new_width;
$resized_image = imagecreatetruecolor($new_width, $new_height);
$source_image = imagecreatefromjpeg($target_file);
imagecopyresampled($resized_image, $source_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($resized_image, "uploads/resized_" . $_FILES["image"]["name"]);
echo "The file has been resized.";
?>
위의 PHP 코드에서는 getimagesize
함수로 기존 이미지의 크기를 얻어와서 원하는 크기로 리사이징하고, imagejpeg
함수를 사용하여 리사이징된 이미지를 저장합니다.
이제 파일을 업로드하고 이미지 리사이징을 할 수 있는 PHP 코드가 준비되었습니다.
이상적으로는 보안 및 오류 처리를 포함하여 실제 웹 애플리케이션에서 사용할 때 추가적인 조치가 필요합니다.