-1

我有在我的网站上显示为缩略图的图像。缩略图的大小变化很大。理想情况下,我不必在每个缩略图的尺寸中保存每张照片的副本。相反,我可以在 PHP 中指定最终尺寸,并在图像从服务器发送之前调整其大小。

在将照片上传到服务器时,我不会尝试调整照片大小。我无法将图像保存为每个缩略图大小。

问题是缩略图的大小因页面布局而异。因此,如果我将图像保存为每个缩略图大小,我将保存大约 20 倍的照片数量。

我尝试保存“小”“中”和“大”图像,然后调用最接近缩略图大小的图像。看起来有点粗糙,但听起来这可能是正确的方法。

4

3 回答 3

3

好吧,因为你不想耗尽你的磁盘空间,你会耗尽你的 CPU 资源,这更糟。
即使您认为无法将缩略图保存在磁盘上,您也必须这样做。没有其他办法。您只会浪费时间并最终转向正确的设置。

于 2012-12-27T20:26:10.207 回答
3

我做过类似的事情,你可以做的是这样的事情,就像之前发布的那样,这会占用大量资源,并且保存到磁盘通常更好,但如果你真的想要,试一试:

<?php

function createThumbnail($filename, $thumbWidth){
    $details = getimagesize($filename);
    $content = file_get_contents($filename);
    $srcImg = imagecreatefromstring($content);
    $thumbHeight = $details[1] * ($thumbWidth / $details[0]);
    $thumbImg = imagecreatetruecolor($thumbWidth, $thumbHeight);
    imagecopyresampled($thumbImg, $srcImg, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $details[0], $details[1]);
    imagejpeg($thumbImg, null, 100);
    imagedestroy($srcImg);
    return $thumbImg;
}

header("Content-Type: image/jpeg");
echo createThumbnail("/path/to/image.jpg", 200);
于 2012-12-27T20:32:48.430 回答
-1

最好的方法当然是计算图像大小并返回img具有适当属性的标签,如下所示:

"<img width=\"" . $width . "px\" height=\"" . $height . "\" src="..."/>"

“即时”调整图像大小太费时间了。考虑显示 20 张图像的情况,每张图像将被缩放 150 毫秒(取决于图像的大小和比例因子)。显示一个页面大约需要 3 秒以上。你真的要强迫用户等待这么长时间才能看到页面的内容吗?

于 2012-12-27T20:56:55.723 回答