2010-07-26 41 views
6

改善页面加载的一种方法是指定图像尺寸(高度宽度)。在PHP中,这可以通过getimagesize()完成,但是我可以想象如果你有很多图像,执行起来会很慢。动态检索图像尺寸的最快方法

什么是动态获取多个图像的图像尺寸的最佳方式,对页面加载的影响最小。我们正在谈论50多个图像。

+0

你想象它会变慢,还是你真的测试过它? – Maerlyn 2010-07-26 10:56:42

+0

我不认为它实际上加快了网站的速度,但避免了页面在图像加载时的变化形状(感觉更快)。无论哪种方式,问题都是关于获取维度比运行getimagesize()有更多的用途。 – jerclarke 2014-06-25 19:58:23

回答

7

我刚刚与55个5+ MB图片测试:

ImageMagick的getImageGeometry了5.3 seconds(因为毕竟每个文件必须重新创建imagick对象),而和getimagesize去通的图像0.032 seconds。后者比可以接受的多。

如果没有,将尺寸存储在数据库中。

编辑:此外,如果您通过TCPIP获取文件,这会显着减慢过程。所以,如果你这样调用它:

getimagesize('http://www.blabla.com/pic.jpg');

而不是

getimagesize('localdir/hereiam/pic.jpg');

你得到一些网络开销。

另外,如果这些图片始终有EXIF数据(用数码相机制作),那么您可以使用PHP exif_函数,如:exif_read_data。

问题:您正在使用哪个PHP版本?较旧的4.x版本在某些文件系统上关于getimagesize的问题较小。

2

是的,getimagesize()可能会很慢,特别是在大图像上,它也取决于服务器。如果你有一个大的图像集合,你想显示在网页上的每个图像的分辨率,我可能会使用一个数据库。每当图像上传或修改时使用getimagesize()

这也使得可以创建更多功能的图像集合,因为您可以使用SQL语句对照片进行分组,但不管您喜欢如何。例如“显示今日的图片”,“显示上周的图片”等。

如果您的收藏很小并且图片数据库不是一个选项,那么您应该先尝试用一个普通的getimagesize()来表现您的网站的性能。

0

我相信你不是在谈论图标和设计图像,而是在谈论用户和编辑者上传到服务器的动态图像。

如果是这样的话,我会调整上传的图片时,他们上传并知道它们的大小总是

0

我知道获取图像的尺寸以最快的方式

https://github.com/tommoor/fastimage

+0

已经很长时间了,但是你有代码的php版本吗? – bcbishop 2014-04-24 03:15:59

+0

据我所知,它适用于所有的PHP版本。我使用它与PHP 5.4 – 2014-04-24 18:16:44

+0

对不起,我很困惑,这是红宝石代码,它如何使用PHP?你有一个例子,我可以在我的PHP代码中使用它吗? – bcbishop 2014-04-24 21:01:04