怎样安装PHP的imagick扩展

2018年12月18日 | 分类: 【技术】

【介绍】

imagick是一个PHP的扩展,它调用ImageMagick提供的API来进行图片的操作。

ImageMagick是一套软件系列,主要用于图片的创建、编辑以及转换等。

ImageMagick与GD相比性能要高很多,如果是在处理大量的图片时更加能体现ImageMagick的性能。

【安装ImageMagick(remi源)】

输入:

dnf install php-imagick

输出:

Last metadata expiration check: 1:44:36 ago on Tue 06 Sep 2022 08:08:11 PM UTC.
Dependencies resolved.
================================================================================
 Package                Arch     Version                   Repository      Size
================================================================================
Installing:
 php-pecl-imagick-im6   x86_64   3.7.0-1.el8.remi.7.4      remi-modular   189 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 189 k
Installed size: 1.0 M
Is this ok [y/N]: y
Downloading Packages:
php-pecl-imagick-im6-3.7.0-1.el8.remi.7.4.x86_6 218 kB/s | 189 kB     00:00
--------------------------------------------------------------------------------
Total                                           145 kB/s | 189 kB     00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : php-pecl-imagick-im6-3.7.0-1.el8.remi.7.4.x86_64       1/1
  Running scriptlet: php-pecl-imagick-im6-3.7.0-1.el8.remi.7.4.x86_64       1/1
  Verifying        : php-pecl-imagick-im6-3.7.0-1.el8.remi.7.4.x86_64       1/1

Installed:
  php-pecl-imagick-im6-3.7.0-1.el8.remi.7.4.x86_64

Complete!

然后并不需要设置 php.ini ,PHP系统会自动加载此模块。

在应用程序中查看:

Imagick support	Yes

【安装ImageMagick(源码编译)】

首先编译安装ImageMagick

官网:http://www.imagemagick.org/
官网:https://sourceforge.net/projects/imagemagick/
下载:https://sourceforge.net/projects/imagemagick/files/

最新版本:ImageMagick-7.0.7-25

wget https://sourceforge.net/projects/imagemagick/files/im7-src/ImageMagick-7.0.7-25.tar.gz && tar zxvf ImageMagick-7.0.7-25.tar.gz && cd ImageMagick-7.0.7-25
./configure && make && make install
ln -s /usr/local/include/ImageMagick-7/ /usr/local/include/ImageMagick

【安装ImageMagick(Ubuntu下直接安装)】

Ubuntu下直接安装imagemagick 以及 libmagickwand-dev:

apt-get install imagemagick
apt-get install libmagickwand-dev

【安装imagick(源码编译)】

从PECL安装imagick

官网:http://php.net/imagick
下载:https://pecl.php.net/package/imagick

最新版本:imagick-3.4.4

wget http://pecl.php.net/get/imagick-3.4.4.tgz && tar zxvf 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
make && make install

输出:

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20170718/
Installing header files:          /usr/local/php/include/php/

或者使用 remi 库安装时:

phpize && ./configure --with-php-config=/usr/bin/php-config
make && make install

输出:

Installing shared extensions:     /usr/lib64/php/modules/
Installing header files:          /usr/include/php/

从源安装imagick

参考:https://stackoverflow.com/questions/60458826/how-to-install-imagemagick-imagemagick-devel-and-pecl-imagick-on-rhel-8

【设置】

在 php.ini 文件中添加:

; [imagick]
extension = "imagick.so"

然后重启服务器即可加载。

【验证】

systemctl restart php-fpm && ldconfig && php -m | grep imagick

输出:

imagick

【排错】

报错:no decode delegate for this image format `JPEG’ @ error/constitute.c/ReadImage/509

参考:https://blog.csdn.net/u014237185/article/details/40487577

查看系统是否有 jpeg 格式:

convert -list format

发现没有 jpeg 。

编译安装 jpeg :

参考:https://amon.org/jpeg

wget http://www.ijg.org/files/jpegsrc.v9b.tar.gz && tar -zxvf jpegsrc.v9b.tar.gz && cd jpeg-9b && ./configure --prefix=/usr --enable-shared && make && make install

路径:/usr/lib64

报错:no decode delegate for this image format `PNG’ @ error/constitute.c/ReadImage/509

查看系统是否有 png 格式:

convert -list format

发现没有 png 。

编译安装 png :

参考:https://amon.org/libpng

wget https://jaist.dl.sourceforge.net/project/libpng/libpng16/older-releases/1.6.21/libpng-1.6.21.tar.gz && tar -zxvf libpng-1.6.21.tar.gz && cd libpng-1.6.21 && ./configure --prefix=/usr --enable-shared LDFLAGS="-L/usr/lib -lz" && make && make install

路径:/usr/lib64

报错:non-conforming drawing primitive definition `text’ @ error/draw.c/DrawImage/3379

查看系统是否有 txt 格式:

convert -list format

发现没有 txt 。

编译安装 freetype :

参考:https://amon.org/freetype

wget http://sourceforge.net/projects/freetype/files/freetype2/2.6.5/freetype-2.6.5.tar.gz && tar -zxvf freetype-2.6.5.tar.gz && cd freetype-2.6.5 && ./configure --prefix=/usr --with-png --enable-shared && make && make install

路径:/usr/lib64

编译安装 libtiff :

参考:https://amon.org/libtiff

wget http://download.osgeo.org/libtiff/tiff-4.0.9.tar.gz && tar -zxvf tiff-4.0.9.tar.gz && cd tiff-4.0.9 && ./configure --prefix=/usr && make && make install

路径:/usr/lib64

重新编译安装 Imagemagick :

wget https://sourceforge.net/projects/imagemagick/files/im7-src/ImageMagick-7.0.7-25.tar.gz && tar zxvf ImageMagick-7.0.7-25.tar.gz && cd ImageMagick-7.0.7-25
./configure --enable-shared --enable-lzw --without-perl --with-modules
make && make install

报错:libltdl is required for modules

yum install -y libtool-ltdl-devel

路径:/usr/local/lib/ImageMagick-7.0.7/modules-Q16HDRI/filters

软连接:

ln -s /usr/local/include/ImageMagick-7/ /usr/local/include/ImageMagick

检查 jpeg/png/text 是否已被支持:

convert -list format

可见:

...
      JPE* JPEG      rw-   Joint Photographic Experts Group JFIF format (90)
     JPEG* JPEG      rw-   Joint Photographic Experts Group JFIF format (90)
      JPG* JPEG      rw-   Joint Photographic Experts Group JFIF format (90)
      JPS* JPEG      rw-   Joint Photographic Experts Group JFIF format (90)
...
      PNG* PNG       rw-   Portable Network Graphics (libpng 1.6.21,1.6.34)
           See http://www.libpng.org/ for details about the PNG format.
    PNG00* PNG       rw-   PNG inheriting bit-depth, color-type from original, if possible
    PNG24* PNG       rw-   opaque or binary transparent 24-bit RGB (zlib 1.2.11)
    PNG32* PNG       rw-   opaque or transparent 32-bit RGBA
    PNG48* PNG       rw-   opaque or binary transparent 48-bit RGB
    PNG64* PNG       rw-   opaque or transparent 64-bit RGBA
     PNG8* PNG       rw-   8-bit indexed with optional binary transparency
...
     TEXT* TXT       r--   Text
...

注意:务必重启服务器看效果。

【参考】

参考:http://openskill.cn/article/498
参考:https://suiyuanjian.com/545.html