PHP 宽图像 - 性能问题


PHP WideImage - performance issues

我在使用 PHP 的 WideImage 库时遇到了严重的性能问题 - http://wideimage.sourceforge.net/。 使用 WideImage::load() 加载 2.2 MB .png文件时,内存使用量峰值为 93 MB! 此外,加载、调整大小和写入 750 KB .jpg的文件系统几乎需要 30 秒。 我在两台不同的服务器上运行了这些基准测试,结果相似。

还有其他人遇到过这些问题吗? 难道只是WideImage是资源消耗者吗? 如果我用直接GD而不是WideImage重写图像处理,我是否可以期望更好的性能,或者大致相同? 我知道PHP不是图像处理的最佳语言,但我宁愿不必用C编译一些东西,然后从PHP调用它:(

谢谢你的时间 - 安迪

运行

了一些简化的基准测试,我想我想通了。 WideImage 的调整大小方法不是持久性的。 例:

$image = WideImage::load('path/to/file.png');
$image->getWidth();   <-- lets say that returns a width of 2000 pixels
$image->resize(100, 100);
$image->getWidth();   <-- that will still return a width of 2000 pixels, the original $image has not been altered

WideImage 操作返回一个新的图像实例,并使以前的图像保持不变,因此要获得操作的结果,您需要将其分配给一个变量:

$image = WideImage::load('path/to/file.png');
$image->getWidth();        // 2000 px
$resizedImage = $image->resize(100, 100);
$image->getWidth();        // still 2000 px
$resizedImage->getWidth(); // 100 px

所以我在比我想象的要大得多的图像周围移动,因为我的调整大小方法实际上并没有改变我的源图像。

也许您应该使用自定义解决方案。WideImage 可能存在一些性能问题。这是对宽图像性能和内存问题的有趣调查。