[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 코드가 준비되었습니다.

이상적으로는 보안 및 오류 처리를 포함하여 실제 웹 애플리케이션에서 사용할 때 추가적인 조치가 필요합니다.

참고 자료