GD library의 경우 imagecopyresampled()
을 사용하십시오.
<?php
// The file
$filename = 'test.jpg';
$percent = 0.5;
// Content type
header('Content-type: image/jpeg');
// Get new dimensions
list($width, $height) = getimagesize($filename);
$new_width = $width * $percent;
$new_height = $height * $percent;
// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// Output
imagejpeg($image_p, null, 100);
?>
편집 : 당신이 지정된 크기에 이미지 파일의 크기를 조정하려면, 즉 좀 더 열심히합니다. 모든 주요 이미지 형식은 압축을 사용하며 압축률은 압축되는 특성에 따라 다릅니다. 맑은 푸른 하늘을 압축하면 바다보다 더 나은 압축률을 얻을 수 있습니다.
당신이 할 수있는 최선의 방법은 특정 크기를 시도하고 필요한 경우 파일 크기를 확인하는 것입니다.
Resize ratio = desired file size/actual file size
Resize multipler = square root (resize ratio)
New height = resize multiplier * actual height
New width = resize multiplier * actual width
이것은 기본적으로 예상되는 압축 비율의 근사를 결정합니다. 나는 당신이 약간의 관용 (+/- 5 %와 같은)을 가질 것이고, 필요에 따라 숫자를 조정할 수 있다고 기대할 것입니다.
특정 파일 크기로 직접 조정할 수있는 방법은 없습니다. 마지막으로 특정 파일 크기에 대한 크기 조정이 다소 이상하다는 것을 추가 할 것입니다. 특정 높이 및/또는 너비로 크기 조정 (가로 세로 비율 유지)은 훨씬 더 일반적이며 예상됩니다 (사용자 별).
업데이트 : 제대로 지적 되었 듯이 파일 크기가 잘못되었습니다. 이 비율은 두 번 적용 할 때 파일 크기 비율의 제곱근이어야합니다 (한 번 높이, 한 번 너비까지). PHP에서 제공하는 GD 라이브러리 사용
분수 구성 요소 "크기 조정 비율"이 제곱되기 때문에 원하는 크기의 파일로 끝납니다. 1MB 이미지가 있고 약 512KB 파일이 필요한 경우 newheight = sqrt (2) * height (너비와 마찬가지로) – dcrosta
유용한 메모를 주셔서 감사합니다. – taras
@dcrosta : 꽤 맞습니다. mltiply에 sqrt (비율)로 고정됩니다. – cletus