我有一个数据库,用于存储项目和每个项目的图像链接。现在图像无法在本地存储(也没有足够的空间和其他原因),所以我链接到其他服务器上的图像。
当我不想显示项目(带有它的图像)时,我使用mysql_fetch_array运行while语句(简化):
$result = mysql_query("SELECT * FROM items");
while($row = mysql_fetch_array($result)) {
echo "<h1>".$row['name']."</h1>";
echo "<img width='200' src='".$row['img']."' />";
}
但是图像加载需要永远,因为一些外部图像尺寸很大,但我只需要200px宽。
有没有办法在旅途中缩小图像,或者加速加载?
(使用php / html)
谢谢,迈克。
答案 0 :(得分:2)
你在旅途中做的任何事情都会更慢,因为要调整图像大小,你必须先下载它。
你可以调整图像大小并保存较小的版本,这样做非常简单。文档和评论here中有很多示例。
但是,如果您保存较小的图像并从服务器(或其他可以放置它们的地方,如Amazon S3)在未来的请求中提供服务,那么您只能从中获益。
您可以编写一个快速脚本,使您的数据库引用的每个图像的较小版本脱机,然后开始提供它们,而不是编写指向远程版本的<img>
标记。
答案 1 :(得分:1)
没有
图像是特定(文件)大小,并存储在您无法控制的位置。
为了减小尺寸,您必须将数据传输到您控制的地方 - 这与传输到浏览器所花费的时间大致相同(之后您必须花时间编辑图像,然后将时间传输到浏览器。)
答案 2 :(得分:0)
没有直接的方法可以动态调整图像大小,因为它需要大量的CPU计算,所以只需更简单的服务完整的res图像并让浏览器调整它的大小。
如果您决定要调整服务器上的图像大小,然后服务器降低res图像,则可以使用this PHP类。我使用起来非常简单并且工作得非常快。
希望这有帮助。
答案 3 :(得分:0)
如果你拥有图像的外部位置并且有很多图像,我会创建一个缩放功能。
E.g:
"domain.com/yourimage?w=200"
其中"w"
是宽度,告诉服务器在检索它之前调整它的大小。