我的图片在我的网站上显示为缩略图。缩略图的大小差异很大。理想情况下,我不必在每个缩略图的尺寸中保存每张照片的副本。相反,我可以在PHP中指定最终尺寸,并在从服务器发送图像之前调整图像大小。
我不尝试在将照片上传到服务器时调整照片大小。我不能够以每个缩略图大小保存图像。
问题是缩略图的大小因页面布局而异。因此,如果我将图像保存为每个缩略图大小,我将节省大约20倍的照片数量。
我尝试保存'小''中'和'大'图像,然后我调用最接近缩略图大小的图像。看起来有点粗糙,但听起来这可能是正确的方法。
答案 0 :(得分:3)
好吧,因为你不想耗尽你的磁盘空间,你将耗尽你的CPU资源,这更糟糕 即使您认为您无法在磁盘上保存缩略图,您也必须这样做。没有其他办法。你只是浪费你的时间,最终转向正确的设置。
答案 1 :(得分:3)
我做过类似的事情,你可以做的就像这样,就像之前发布的那样可以消耗大量的资源,而保存到磁盘通常会更好,但是如果你真的想要这样做,那就试一试:< / p>
<?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);
答案 2 :(得分:-1)
执行此操作的最佳方法当然是计算图像大小并使用适当的属性返回img
标记,如下所示:
"<img width=\"" . $width . "px\" height=\"" . $height . "\" src="..."/>"
“动态”调整图像大小非常耗时。考虑这样一种情况,即您显示20个图像,每个图像将缩放150ms(取决于图像的大小和比例因子)。显示单页大约需要3秒钟。你真的想强迫用户等这么长时间才能看到页面的内容吗?