imagick扩展包地址:
https://pecl.php.net/package/imagick
1、安装所需依赖,如果在编译时还提示缺少其他依赖,请自行安装
yum install autoconf gcc gcc-c++ ImageMagick-devel
2、下载imagick最新稳定版 (截止20200831 最新版本是3.4.4)
wget https://pecl.php.net/get/imagick-3.4.4.tgz
tar xf imagick-3.4.4.tgz
cd imagick-3.4.4
/usr/local/php/bin/phpize
根据自己phpize的位置来运行即可(不知道phpize在哪的直接find / -name phpize查找),运行完提示下面信息,然后编译
Configuring for:
PHP Api Version: 20160303
Zend Module Api No: 20160303
Zend Extension Api No: 320160303
3、编译扩展模块
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
执行完成后会显示扩展模块编译到的目录/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/
4、修改php.ini添加扩展
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/"
extension=imagick.so
注意:如果之前配置过extension_dir路径了,则只需要配置extension=imagick.so即可
保存退出,重启php
但是出现一个奇怪的错误:
checking ImageMagick MagickWand API configuration program... configure: error: not found. Please provide a path to MagickWand-config or Wand-config program.
ERROR: `/tmp/pear/temp/imagick/configure --with-imagick' failed
查了一些资料才知道原来是没有安装ImageMagick-devel包,注意ImageMagick-devel并不是ImageMagick,ImageMagick-devel是用于 ImageMagick 程序开发的静态库和头文件。所以Imagick也是基于此开发,必不可少咯。而ImageMagick是用来显示和操作图像的 X 应用程序,之前已经安装过。
yum install ImageMagick-devel ( debian系统使用:sudo apt-get install imagemagick libmagickwand-dev )
即可安装ImageMagick-devel
------------------------------------------------------------------------------------------------------------------------------------------------------------
示例代码:
<?php
/**
* Created by graph-design-api.
* AUTHOR: daiguojin
* Date: 2020/10/29 15:13
*/
try {
$im = new \Imagick();
$svg = file_get_contents("./Plant_004.svg");
$p = '/^(.*)width=([\'\"])([\d\.]+)(\w+)([\'\"])(.*)height=([\'\"])([\d\.]+)(\w+)([\'\"])(.*)$/';
if (preg_match($p, $svg)) {
$svg = preg_replace($p, "$1width=$2$3$5$6height=$7$8$10$11", $svg);
}
$im->readImageBlob($svg);
$im->setImageFormat("png24");
$srcImage = $im->getImageGeometry();
$im->resizeImage(100, 100, \Imagick::FILTER_LANCZOS, 1, TRUE);
$im->writeImage('output.png');
$im->clear();
$im->destroy();
} catch (\Exception $e) {
die($e->getMessage());
}
如果报:
unable to load module `/usr/lib64/ImageMagick-6.9.10/modules-Q16/coders/svg.la': file not found @ error/module.c/OpenModule/1316
多半是依赖没装好,按下面的步骤重装:
1.安装依赖ImageMagick
下载地址:http://www.imagemagick.org/download/releases/
cd /usr/local/src
wget http://www.imagemagick.org/download/releases/ImageMagick-6.9.10-33.tar.xz
tar xf ImageMagick-6.9.10-33.tar.xz
cd ImageMagick-6.9.10-33
./configure --prefix=/usr/local/imagemagick
make && make install
2.安装imagick
在这里查到下载页面
https://pecl.php.net/packages.php
下载页面:https://github.com/Imagick/imagick/releases
cd /usr/local/src
wget http://pecl.php.net/get/imagick-3.4.4.tgz
tar xf imagick-3.4.4.tgz
cd imagick-3.4.4
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-imagick=/usr/local/imagemagick/
make && make install