安装PHP的imageMagick扩展

引言

最近需要使用imageMagick for php开发个扩展用于转换各类文件到图片。
immageMagick需要多个工具共同协作才能达到效果。
这使得安装步骤有一定程度的复杂性。

检查

安装imageMagick扩展之前需要确认几点内容,

  1. php程序是否为线程安全(NTS OR TS)
  2. php程序版本(x86 OR x64、5.x)
  3. 系统内是否已经安装过imageMagick软件。

我们一共需要下载下列内容:

  1. php_imagick.dll(php扩展)
  2. imageMagick软件

安装

我们可以在以下两处下载到php扩展

http://windows.php.net/downloads/pecl/releases/imagick/

https://pecl.php.net/package/imagick
请注意,我们需要的是dll而不是imageMagick扩展的源码。并看清线程安全的情况以及对应的PHP版本。
我们需要将下载下来的压缩包里的 CORERL*.dll 文件解压到PHP程序的根目录,并把 php_imagick.dll 放入 php扩展库目录。
并在php.ini中加入一行 extension=php_imagick.dll
并且重启你的Web Service 或者 整个Server

如果加载成功,那么您将看到在phpinfo中显示出imagick字段
但这时,您可能会看到 ImageMagick number of supported formats:0

这时候还需要安装 ImageMagick 应用程序 来给ImageMagick扩展提供支持。
由于最新版本的扩展对应着只能支持6.8.9的ImageMagick,此处不鼓励官方下载,官网不对历史版本的二进制安装文件提供下载支持,可以下载这个版本:http://pan.baidu.com/s/1dEIo6Oh (ImageMagick-6.8.9-6-Q16-x86-dll.exe) 如需其他版本,则自行搜索。

需要另外新建一个系统环境变量名为 MAGICK_HOME,值为 \你的imagick路径\modules\coders,这步主要用来定位imagemagick的module,很重要。(否则支持的图片格式数量默认为0, 无法处理图片。 ImageMagick number of supported formats: => 0)

如果phpinfo没有Imagick项,请使用php扩展调试命令来检查扩展中存在的问题,并确保三方软件版本一致即可。

php扩展调试命令:
在cmd运行: php —ri imagick

报错

  1. 如果报错是:“php_imagick.dll’ - %1 不是有效的 Win32 应用程序” ,则说明版本不相符合。 需要检查imagick软件本身( 如x86 )、php本身( x86 ts (thread safe) )、php扩展php_imagick.dll (ts) 三方版本 要一致。

  2. 如果报错是:“php.exe - 系统错误 ,无法启动此程序因为计算机丢失CORERL_wand.dll” ,说明你没有将phpimagick-3.3.0-5.4-ts-vc9-x86.zip扩展包中的“CORE.dll” 这些dll文件放到你的php.exe同级目录下。
    需要拷贝 CORE_
    .dll 到php目录就可以解决了。

  3. 如果php —ri imagick 显示的结果 ImageMagick number of supported formats: => 0 支持的图片格式数量为0,需要新建一个环境变量。

  4. 如果php代码执行调用时报错:“ NoDecodeDelegateForThisImageFormat ”,表明你的php_imagick.dll的版本 并不支持或并不匹配 ImageMagick软件版本,这时候 php —ri imagick 的结果也显示为: ImageMagick number of supported formats => 0 。需要更换ImageMagick软件版本。