Php 动态检索图像尺寸的最快方法

Php 动态检索图像尺寸的最快方法,php,optimization,image,performance,Php,Optimization,Image,Performance,改进页面加载的一种方法是指定图像尺寸(高度宽度)。在PHP中,这可以通过getimagesize()完成,但是我可以想象,如果有很多图像,执行起来会非常慢 动态获取多个图像的图像尺寸的最佳方法是什么,对页面加载的影响最小。我们谈论的是50多个图像。是的,getimagesize()速度可能会很慢,尤其是在大型图像上,这还取决于服务器。如果您有一个大型图像集合,并且希望在页面上显示每个图像的分辨率,我可能会为此使用数据库。无论何时上载或修改图像,都会使用getimagesize() 这也使得创建更

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

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

是的,
getimagesize()
速度可能会很慢,尤其是在大型图像上,这还取决于服务器。如果您有一个大型图像集合,并且希望在页面上显示每个图像的分辨率,我可能会为此使用数据库。无论何时上载或修改图像,都会使用
getimagesize()

这也使得创建更通用的图像集合成为可能,因为您可以使用SQL语句对图片进行任意分组。例如“显示今天的图片”、“显示上周的图片”等等


如果您收集的图像很小,并且图像数据库不是一个选项,那么您应该首先尝试使用普通的
getimagesize()

我刚刚用55台5+MB图像进行了测试:

Imagemagick的getImageGeometry花费了
5.3秒
(因为在每个文件之后,您必须重新创建imagick对象),而getimagesize花费了
0.032秒
。后者是完全可以接受的

如果没有,请将维度存储在数据库中

编辑:另外,如果您通过TCPIP获取文件,这会大大降低处理速度。所以,如果你这样称呼它:

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

而不是

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

你会得到一些网络开销

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


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

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


如果是这样的话,我会在上传图像时调整它们的大小,并知道它们的大小,这是我知道的获取图像大小的最快方法


你认为它会很慢,还是你真的测试过它?我认为它实际上并没有加快网站的速度,而是避免了在加载图像时改变页面形状(感觉更快)。无论哪种方式,问题都在于比运行getimagesize()更快地获取维度,getimagesize()还有许多其他用途。这已经有很长时间了,但您是否也有php版本的代码?据我所知,它适用于所有php版本。我将它与PHP5.4一起使用,很抱歉我感到困惑,这是ruby代码,它如何与php一起工作?你有一个例子,我可以使用它在我的php代码?谢谢!我使用了它,但与我从getimagesize(php函数)获得的性能相比,性能提升并不显著。你衡量过ruby版本的性能吗?没有。最快的方法是将大小保存在某个位置或图像名称中,如下所示:imagename-400-500.jpg