我在 PHP 中有一个函数可以将图像大小调整为缩略图,我的图像上传脚本采用上传的图像并运行此函数来调整图像大小(如果图像比 700px 宽),然后还运行该函数 2 次以上以创建 2 个不同大小的缩略图图片,因此用户每次上传图片时总共会保存3张图片。我的调整大小/缩略图函数会针对缩略图调用两次,如果文件尺寸过宽,偶尔会调用第三次。

现在这个调整大小函数使用 getimagesize( ) 来获取尺寸,所以我的 uplaod 脚本调用这个函数,然后调整大小函数再使用 getimagesize( ) 函数 2-3 次来制作其他大小的图像。

我想我应该将尺寸传递给调整大小函数,因为我在上传过程中得到了它们?

我真正的问题是, getimagesize( ) 是一个资源匮乏的函数吗?最好至少尽可能使用它,还是在上传 1 个图像时调用它几次?

有帮助吗?

解决方案

只是一个提示/ precausion,我asssume你使用GD功能。当创建一个以上的缩略图,通常的瓶颈被错误执行图像缩放功能 - 每次读取原始图像,然后保存调整大小之一。更好的办法是将加载图像,并使用图像资源,以与imagecopyresampled所有缩略图 - 不仅通过图像功能的dimentions - 也通过GD参考。大公方式原始文件被加载一次。

其他提示

对于只运行在上载的东西,它不应该理会那么多。上传不到哪用户期望超快响应行动。 过早的优化是所有罪恶的根源

话虽这么说,getimagesize()不是特别昂贵,但如果你可以把它只有一次这样做。但我不预测多的速度增加。脚本的昂贵的部分是,图像尺寸本身。

它没有特别的资源饥饿 - 它必须打开一个文件,并读出的图像标头。

不要走出自己的方式来优化它拿走 - 如果它很容易,做到这一点。否则,观望,其中的真正的瓶颈是在您的应用程序优化之前。

最好的办法是分析您的脚本。

您得到的不是可能不适用于特定情况的理论答案,而是真正的答案,而且确实很有启发性。

此外,有了这个习惯,你将能够:

  • 发现瓶颈
  • 区分微观优化和主要优化。

我个人开发。在 Windows 上并在 *nix 上部署。

在我的开发 dox 上,我使用 xdebug + WinCacheGrind 来读取结果。

没有他们我就活不下去。:)

http://elrems.wordpress.com/2008/02/12/profiling-php-with-xdebug-and-wincachegrind/

我不认为上载的部分应该是你调整图像大小。你应该在以后的时间作为cron作业调整图像大小。您可以使用像ImageMagick的或其他一些调整大小的应用程序调整图像的第三方应用程序。这样,你节省前端时间。您可以运行调整大小作业每5分钟左右。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top