【问题标题】:Question about image thumbnail performance in PHP关于PHP中图像缩略图性能的问题
【发布时间】:2009-08-14 19:14:09
【问题描述】:

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

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

我认为我应该只将尺寸传递给调整大小功能,因为我在上传过程中得到了它们?

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

【问题讨论】:

    标签: php thumbnails


    【解决方案1】:

    只是一个提示/预防措施,我假设您正在使用 GD 函数。创建多个缩略图时,通常的瓶颈是错误地实现了图像大小调整功能 - 每次读取原始图像然后保存调整大小的图像。更好的方法是加载图像一次,并使用图像资源制作带有imagecopyresampled 的所有缩略图 - 不仅将图像的尺寸传递给函数 - 还要传递 GD 引用。这样,您的原始文件只会加载一次。

    【讨论】:

    • 谢谢,这就是我想做的事情
    【解决方案2】:

    对于只在上传时运行的东西,它不应该这么麻烦。上传不是用户期望超快速响应的操作。 过早的优化是万恶之源

    话虽如此,getimagesize() 并不是特别昂贵,但如果您只能调用一次,请这样做。但我预计速度不会有那么大的提高。脚本中代价高昂的部分是图像本身的大小调整。

    【讨论】:

      【解决方案3】:

      它不是特别消耗资源 - 它必须打开一个文件并读取图像标题。

      不要特意去优化它 - 如果它很容易,那就去做吧。否则,请在优化之前等待并查看应用程序中的真正瓶颈在哪里。

      【讨论】:

        【解决方案4】:

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

        您会得到一个真实的答案,而不是可能不适用于特定情况的理论答案。

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

        • 发现瓶颈
        • 区分微优化和重大优化。

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

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

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

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

        【讨论】:

          【解决方案5】:

          我认为上传部分不应该是您调整图像大小的地方。您应该稍后将图像大小调整为 cron 作业。您可以使用第三方应用程序(如 imagemagick)或其他一些调整大小的应用程序来调整图像大小。这样可以节省前端的时间。您可以每 5 分钟左右运行一次调整大小作业。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-02-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-02-25
            • 2019-02-22
            • 2013-05-27
            相关资源
            最近更新 更多