TK1*_*123 3 php image imagemagick image-processing
我需要对我网站上的用户上传的图片进行以下图像处理:
我是否需要使用MagickWand或iMagick扩展,还是可以在PHP的exec函数中运行终端命令?
是否有理由将PHP扩展作为首选?哪个会更快更好的性能(这个网站可能有很多用户,在任何给定时间都会有大量的图像处理)?
使用PHP扩展而不是使用exec或类似函数,您将受益匪浅.内置扩展将更快并使用更少的内存,因为您不必生成新进程并读取输出.图像对象将直接在PHP中使用,而不必读取文件输出,这样可以使图像更易于使用.
如果您有一个繁忙的站点,创建大量进程来编辑图像可能会开始减慢速度并消耗额外的内存.
我想与drew010的答案形成对立.在他的回答中他说:
使用PHP扩展而不是使用exec或类似函数,您将受益匪浅.内置扩展将更快并使用更少的内存,因为您不必生成新进程并读取输出
为了处理图像,这是真的.好吧,我知道使用PHP exec()函数(或类似函数)调用ImageMagick二进制文件会带来额外的开销,使用嵌入式PHP库,但我不清楚它有多少开销.
但硬币还有另外一面.如果您通过扩展将ImageMagick代码嵌入到PHP中,那么无论请求是否处理图像,使用PHP的每个请求都会占用更多内存.如果你使用Apache的mod_php那么这个就显得更因为现在的问题,你的服务器的每个请求在内存中的ImageMagick库,即使它服务的HTML文件!
所以它真的取决于.你真的想让PHP的内存占用尽可能低.如果您正在处理大量需要ImageMagic并且您正在使用FastCGI的请求php_fpm,那么您可能会看到使用嵌入式ImageMagick的好处.但是,如果您只是偶尔使用ImageMagick处理请求和/或使用Apache,mod_php那么您可以通过调用ImageMagick获得更好的性能exec().