对于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%),并且您可以根据需要调整数字。
没有直接的方法可以将大小调整为特定的文件大小。最后我要补充一点,调整到特定文件大小是相当不寻常的。调整到特定的高度和/或宽度(保持纵横比)更为常见和预期(用户)。
更新: 正如正确指出的那样,这会导致文件大小错误。该比率需要是文件大小比率的平方根,因为您要应用它两次(一次是高度,一次是宽度)。