1

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

有没有其他人遇到过这些问题?只是 WideImage 是资源猪吗?如果我用直接 GD 而不是 WideImage 重写我的图像处理,我可以期待更好的性能,还是差不多?我知道 PHP 不是图像处理的最佳语言,但我宁愿不必在 C 中编译一些东西然后从 PHP 中调用它:(

谢谢你的时间 - 安迪

4

2 回答 2

2

运行了一些简化的基准测试,我想我明白了。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

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

于 2012-06-06T18:09:52.217 回答
0

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

于 2012-09-17T08:24:59.303 回答