在 PHP 中调整大图像大小的最有效方法是什么?
我目前使用的 GD功能图像拷贝采样采取高分辨率的图像,并清晰地调整它们的大小,以便网页浏览(大约700像素宽700像素高)。
这对于小型(低于2MB)照片非常有效,整个调整大小的操作在服务器上只需要不到一秒钟。不过,该网站最终将为上传图片大小可达10MB (或图片大小可达5000x4000像素)的摄影师提供服务。
对大图像执行这种调整大小操作会大幅度增加内存使用量(较大的图像会使脚本的内存使用量超过80MB)。有什么办法可以使这个调整大小的操作更有效率吗?我应该使用像 图像魔术这样的替代图像库吗?
现在,调整大小的代码看起来像这样
function makeThumbnail($sourcefile, $endfile, $thumbwidth, $thumbheight, $quality) {
// Takes the sourcefile (path/to/image.jpg) and makes a thumbnail from it
// and places it at endfile (path/to/thumb.jpg).
// Load image and get image size.
$img = imagecreatefromjpeg($sourcefile);
$width = imagesx( $img );
$height = imagesy( $img );
if ($width > $height) {
$newwidth = $thumbwidth;
$divisor = $width / $thumbwidth;
$newheight = floor( $height / $divisor);
} else {
$newheight = $thumbheight;
$divisor = $height / $thumbheight;
$newwidth = floor( $width / $divisor );
}
// Create a new temporary image.
$tmpimg = imagecreatetruecolor( $newwidth, $newheight );
// Copy and resize old image into new image.
imagecopyresampled( $tmpimg, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height );
// Save thumbnail into a file.
imagejpeg( $tmpimg, $endfile, $quality);
// release the memory
imagedestroy($tmpimg);
imagedestroy($img);