我有 Ubuntu 18.04.1 LTS,它默认附带 ImageMagick 6.9.7,我想让 ImageMagick 处理 jp2 图像,因此我安装了 libopenjp2-7-dev 并从源代码安装了 imagemagick7,如下所示:
wget https://www.imagemagick.org/download/ImageMagick.tar.gz
tar xvzf ImageMagick.tar.gz
cd ImageMagick-7.0.10-22
./configure
make
sudo make install
sudo ldconfig /usr/local/lib
magick -version
显示正确的一个:
Version: ImageMagick 7.0.10-22 Q16 x86_64 2020-07-02 https://imagemagick.org
Copyright: © 1999-2020 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI OpenMP(4.5)
Delegates (built-in): jng jp2 jpeg png xml zlib
但phpinfo()
其中却显示:
imagick module version 3.4.4
imagick classes Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel
Imagick compiled with ImageMagick version ImageMagick 6.9.7-4 Q16 x86_64 20170114 http://www.imagemagick.org
Imagick using ImageMagick library version ImageMagick 6.9.7-4 Q16 x86_64 20170114 http://www.imagemagick.org
我甚至试图删除ImageMagick 6.9.7和PHP 的 Imagick扩展,我认为通过重新安装只有一个版本可用的扩展,它会以某种方式指向该版本,但如果没有 ImageMagick6,则无法安装扩展。我不知道如何让 PHP 使用 ImageMagick 7。
答案1
我认为您目前只能使用 ImageMagick v6.x。这里最重要的是模块imagick
本身。无论您的系统上的 ImageMagick 版本是什么,imagick 模块 v3.4.4 仅支持 ImageMagick 版本 6.x。
来自PECL imagick 网站(PHP 扩展社区库):
The 3.4.4 release is intended to be the last release (other than small bug fixes)
that will support either PHP 5.x, or ImageMagick 6.x.
The next planned release will be PHP > 7.0 and ImageMagick > 7.0 at least, if not higher.
答案2
您可以将 ImageMagick 7 与 PHP 结合使用,方法是先在系统上安装 ImageMagick 7,然后按照 repo 中提供的方式编译 PHP imagick 扩展 (https://github.com/Imagick/imagick):
编译并安装 ImageMagick 7:
sudo apt update
sudo apt build-dep imagemagick
wget https://www.imagemagick.org/download/ImageMagick.tar.gz
tar xf ImageMagick.tar.gz
cd ImageMagick-7*
./configure
make
sudo make install
sudo ldconfig /usr/local/lib
编译并安装 PHP imagick:
git clone https://github.com/Imagick/imagick
cd imagick
phpize && ./configure
make
make install
可以通过在 PHP 中调用 Imagick::getVersion() 来验证 PHP 使用的版本