MENU

安装PHP的imageMagick扩展

September 17, 2018 • 学习

引言

最近需要使用 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 版本。
我们需要将下载下来的压缩包里的 CORE_RL_*.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 路径modulescoders,这步主要用来定位 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 - 系统错误 ,无法启动此程序因为计算机丢失 CORE_RL_wand_.dll” ,说明你没有将 php_imagick-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 软件版本。
Last Modified: January 27, 2021
Archives QR Code
QR Code for this page
Tipping QR Code