2

我目前正在使用 php exec() 通过 imagemagick 生成图像,因为我不能使用 imagick 类,因为我得到了这个

Fatal error: Class 'Imagick' not found

作为解决方案,我使用 exec(),但问题是执行速度太慢。

我没有尝试使用 imagick 类,所以我不知道以这种方式生成是否比 exec() 更快。

问题是,imagick class 还是 exec() 哪个更好用?

更新:这是我的 phpinfo GD 在此处输入图像描述

这是我拥有的imagick版本

Version: ImageMagick 6.0.7 08/25/10 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2004 ImageMagick Studio LLC
4

4 回答 4

1

理想情况下,为了安全起见,应该在您的服务器上禁用 exec - 如果它不是您的服务器.. 好吧 - 它仍然应该是:-)

我从未在我使用过的任何服务器上看到它被禁用;共享与否。

Safe_mode 从 PHP 中移除,并在启用时生成致命的 E_CORE_ERROR 级别错误。

无论如何,它的马匹 - 在某些情况下,Imagick 更快;在其他情况下,GD 更快,这取决于您要做什么。但 Imagemagick 可能比 IMagick 慢。

几年前我做了一些速度测试,得到了一些有趣的结果:Results PDF,他们现在可能需要更新了。

在较大的文件上,GD 挂起,但可能有增加内存的方法。如果您正在做一些更复杂的事情,Imagick 使用起来会更加混乱。

由于你没有说你在做什么,我无法提供更多信息。

于 2013-02-17T21:26:41.707 回答
0

根据我的经验,它们在速度方面都具有可比性。最大的缺点是 Imagick 类缺乏选项和自定义。也就是说,我通常会避免 exec() 的安全隐患。

于 2013-02-13T01:04:55.307 回答
0

使用 Imagick 类更快。

原因: Exec 必须派生一个新进程来加载转换可执行文件(或您正在使用的任何 imagemagick 工具).. 所以通常第一次它必须去磁盘查找二进制文件.. 未来的尝试应该使用操作系统缓存以加载它,因此速度相当

imagick 类是一个编译成 PHP 的链接库,它应该提供更好的性能,具体取决于 php 在系统中的加载方式(CGI / fastcgi / extension)

正如另一位发帖人所说,imagick 类的选项较少——但根据我的经验,在 99% 的选项不能直接使用的情况下,还有另一种方法可以做到这一点。

编辑:理想情况下,为了安全起见,应该在您的服务器上禁用 exec - 如果它不是您的服务器.. 好吧 - 它仍然应该是:-)

于 2013-02-13T01:07:41.180 回答
0

最好使用 imagick 类,因为 exec 是一个安全问题。然而,它并不是真正需要的。尝试使用内置的 GD 函数。

于 2013-02-13T01:08:52.947 回答