PHP에서 이미지 크기를 조정하려면 ImageMagick 또는 GD 라이브러리의 함수를 사용할 수 있습니다. 특히 GD 함수를 활용하면 디지털 카메라로 촬영한 고해상도 원본 이미지를 리샘플링하는 과정에서 파일 용량까지 함께 줄일 수 있어, 웹 페이지 로딩 속도 개선에도 큰 도움이 됩니다.
아래 코드는 GD 함수를 사용해 JPEG 이미지의 크기를 조정하는 사용자 정의 함수입니다. 원본 이미지의 가로세로 비율을 자동으로 계산하여 왜곡 없이 리사이즈하며, 필요에 따라 잘라내기(crop) 옵션도 함께 지원합니다.
function image_resize($file_name, $width, $height, $crop = FALSE) {
list($wid, $ht) = getimagesize($file_name);
$r = $wid / $ht;
if ($crop) {
// 지정한 크기에 맞춰 잘라내기
if ($wid > $ht) {
$wid = ceil($wid - ($width * abs($r - $width / $height)));
} else {
$ht = ceil($ht - ($ht * abs($r - $width / $height)));
}
$new_width = $width;
$new_height = $height;
} else {
// 원본 비율을 유지하며 리사이즈
if ($width / $height > $r) {
$new_width = $height * $r;
$new_height = $height;
} else {
$new_height = $width / $r;
$new_width = $width;
}
}
$source = imagecreatefromjpeg($file_name);
$dst = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($dst, $source, 0, 0, 0, 0, $new_width, $new_height, $wid, $ht);
return $dst;
}
주요 파라미터 설명
- $file_name: 크기를 조정할 원본 이미지 파일의 경로입니다.
- $width, $height: 조정 후 목표로 하는 가로 및 세로 크기입니다.
- $crop: TRUE로 설정하면 지정한 크기에 정확히 맞도록 이미지를 잘라냅니다. 기본값인 FALSE일 경우에는 원본 비율을 유지하면서 지정된 크기 안에 맞춰 조정됩니다.
함수 호출 예시
아래와 같이 함수를 호출하면 지정한 경로의 JPG 이미지를 250×250 크기로 조정할 수 있습니다.
$img_to_resize = image_resize('path-to-jpg-image', 250, 250);
이렇게 반환된 이미지 리소스는 imagejpeg(), imagepng() 같은 함수를 사용해 실제 파일로 저장하거나 브라우저에 바로 출력할 수 있습니다. 썸네일 생성, 업로드 이미지 최적화 등 다양한 상황에서 활용해 보세요.