【发布时间】:2012-03-10 10:52:03
【问题描述】:
我目前正在开发一个 PHP 应用程序,该应用程序从命令行运行以优化图像文件夹。
PHP 应用程序更像是其他图像优化器的包装器,它只是迭代目录并抓取所有图像,然后通过适当的程序运行图像以获得最佳结果。
以下是我将使用的程序以及每个程序的用途...
imagemagick 确定文件类型并将非动画 gif 转换为 pnggifsicle 以优化 动画 Gif 图像jpegtran 到优化 jpg 图像pngcrush 优化 png 图像pngquant 优化 png 图像为 png8 格式pngout 将 png 图片优化为 png8 格式
我的问题:使用 1-10 张图片,一切运行顺利且相当快,但是,一旦我在包含 10 张或更多图片的较大文件夹上运行,它就会变得非常慢。我真的没有看到一个很好的解决方案,但有一点会有所帮助,那就是避免重新处理已经优化的图像。因此,如果我有一个包含 100 个图像的文件夹,并且我优化了该文件夹,然后添加了 5 个新图像,请重新运行优化器。然后它必须优化 105 个图像,我的目标是让它只优化 5 个较新的图像,因为之前的 100 个图像已经被优化。将新图像添加到图像文件夹时,仅此一项就会大大提高性能。
我意识到简单的解决方案是在处理图像后简单地将图像复制或移动到新文件夹,我对这个简单解决方案的问题是这些图像用于网络和网站,所以图像通常很难 -链接到网站源代码并更改图像的路径会使其复杂化,有时可能会破坏它。
我的一些想法是:将某种文本文件数据库写入图像文件夹,其中将列出所有已处理的图像,因此当应用程序运行时,它只会在不在的图像上运行该文件已经。另一个想法是更改文件名以在名称中包含某种标识以表明它已被优化,第三个想法是在优化后将每个优化文件移动到最终目标文件夹。想法 2 和 3 不好,因为它们会破坏网站源代码中的所有图像路径链接。
所以如果你能想到一个体面/好的解决这个问题的方法,请分享?
【问题讨论】:
标签: php optimization image-processing