PHP WideImage-性能问题

PHP WideImage-性能问题,php,image-manipulation,Php,Image Manipulation,我在使用PHP的WideImage库时遇到了严重的性能问题-。使用WideImage::load()加载2.2 MB.png文件时,内存使用峰值为93 MB!此外,加载、调整和写入750KB.jpg的文件系统几乎需要30秒。我在两台不同的服务器上运行了这些基准测试,结果相似 还有其他人遇到过这些问题吗?这仅仅是一个资源猪吗?如果我用直接GD而不是WideImage重写我的图像处理,我能期望更好的性能吗,或者大约相同?我知道PHP不是最好的图像处理语言,但我不想用C语言编译一些东西,然后从PHP调

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

还有其他人遇到过这些问题吗?这仅仅是一个资源猪吗?如果我用直接GD而不是WideImage重写我的图像处理,我能期望更好的性能吗,或者大约相同?我知道PHP不是最好的图像处理语言,但我不想用C语言编译一些东西,然后从PHP调用它:(


感谢您的时间-Andy运行了一些简化的基准测试,我想我已经解决了。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可能有一些性能问题。下面是一个有趣的调查。

你的问题是什么?它似乎有效。你多久使用aroun调整一次大小d 93 MB内存?每幅图像只需一次?我还认为93 MB可以用于处理大型图像,无论使用何种库或语言。真的吗?93 MB内存用于处理2.2MB图像?30秒用于将jpg大小调整到1MB以下并将其写入文件系统?在生产环境中,这种性能是无法实现的,尤其是在托管环境中PHP分配的内存有限。我不能期望用户在等待jpg调整大小时起床泡茶。我见过很多PHP代码可以更快更精简地完成这类工作,最近在我使用的一个WordPress插件中。我想我会用straight GD重写例程并比较性能。因为我们没有我对系统/CPU一无所知……顺便说一句,我了解到PHP的内存使用量在不同的图像之间可能会有很大的差异,即使它们具有相同的大小和文件格式。我有一个2.2MB.jpg,在调整大小时内存使用量达到71MB,但一个4MB.jpg的峰值只有32MB。不知道为什么。顺便说一句,我确定WideImage增加的内存最少图像处理的开销。我尝试的最大图像在使用纯GD函数时使用了90.4MB的内存,在使用WideImage时使用了92.7MB的内存。希望所有这些都能帮助偶然发现此线程的人。
$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