imagick相对于GD库有更好的图像处理函数支持,滤镜、模糊、旋转的处理效率比GD高很多,对于GIF的处理也更得心应手,imagick还支持3D图像效果。

imagick相对于GD库有更好的图像处理函数支持,滤镜、模糊、旋转的处理效率比GD高很多,对于GIF的处理也更得心应手,imagick还支持3D图像效果。

环境要求

  1. php > 5.4.0 & ImageMagick >= 6.5.3-10
  2. 必须先安装ImageMagick,因为php的Imagick扩展支持的图像格式取决于本地ImageMagick所支持的格式。这个扩展的本质也是调用本地ImageMagick处理图像。

安装ImageMagick

// 1. 下载ImageMagick
wget http://www.imagemagick.org/download/ImageMagick.tar.gz// 2. 解压
tar xvzf ImageMagick.tar.gz// 3. 配置和编译
cd ImageMagick-7.0.3-2
./configure
make// 4. 安装
make install// 5. 配置动态链接库
ldconfig /usr/local/lib// 6. 测试是否安装成功,如果安装目录有logo.gif图片并显示正常则说明安装成功
convert logo: logo.gif
// convert a.png -resize 50% b.png

安装php的imagick扩展

// 1. 下载最新版本
wget http://pecl.php.net/get/imagick-3.4.3RC1.tgz// 2. 使用pear安装扩展
pear install imagick-3.4.3RC1.tgz// 3. 在php.ini中添加extension=imagick.so// 4. 重启php-fpm后查看phpinfo中已经有了imagick扩展

安装过程中报错:
ERROR: '/tmp/pear/temp/imagick/configure --with-php-config=/usr/bin/php-config --with-imagick' failed

原因是没有安装ImageMagick devel包,安装即可:

apt-get install libmagickwand-dev libmagickcore-dev
// 安装ImageMagick devel包后再执行pear安装imagick扩展
pear install imagick-3.4.3RC1.tgz

使用php的imagick扩展处理jpeg和png格式的图片报错:
no decode delegate for this image format 'JPEG' @ error/constitute.c/ReadImage/508

<?php
header('Content-type: image/png');
$im = new imagick('http://noavatar.csdn.net/6/C/4/1_linxinzheng.jpg');
//$im = new imagick('http://images.cnitblog.com/blog2015/598639/201503/222347188449376.png');
$im->setImageFormat('png');
echo $im;
die;
// 查看一下ImageMagick支持的图像格式,发现没有JPEG
convert -list format | grep JPEG

原因是在build ImageMagick的时候没有加载相应的扩展库,先下载对应的图像库,然后重新编译安装ImageMagick即可。

// 安装libjpeg库
wget http://www.ijg.org/files/jpegsrc.v9b.tar.gz
./configure
make
make install// 重新安装ImageMagick
cd ImageMagick-7.0.3-2
./configure
make
make install

重启php-fpm后再次调用,报错Wrong JPEG library version: library is 80, caller expects 90,原因是Ubuntu16.04目前支持的libjpeg最高版本是libjpeg8c,而我刚才安装的是9b,重新安装8c版本即可(也可以看看当前系统支持的libjpeg版本然后下载对应的libjpeg扩展)。

//cd /usr/local/lib
//ls -la | grep jpeg
// libjpeg.so -> libjpeg.so.8.3.0
wget wget http://www.ijg.org/files/jpegsrc.v8c.tar.gz

重新编译安装libjpeg、IM后重启fpm,调用成功perfect

Windows下wampserver64安装

  1. 下载ImageMagick(http://windows.php.net/downloads/pecl/deps/),解压后将bin目录路径加入环境变量。
  2. 下载
    imagick(http://windows.php.net/downloads/pecl/releases/imagick/3.4.3rc1/),在php的ext目录下新建文件夹imagick,将下载包解压到imagick目录下。
  3. 将ImageMagick中bin目录下的所有dll文件,复制到php的ext/imagick目录下(不要覆盖)。
  4. 在php.ini中添加一行
    extension=E:\wamp64\bin\php\php5.6.19\ext\imagick\php_imagick.dll
  5. 重启wampserver。

踩到的坑

ImageMagick可以读、写、操作百万级(mega-),亿兆级(gita-),甚至是特拉级(tear-)像素的图片。不过很多图片格式都有上限,比如PS最大支持300000px的宽和高。对于大图片,ImageMagick会在本地磁盘创建一个pixel cache,如果本地磁盘容量不够,可以指定缓存路径:

convert -define registry:temporary-path=/data/tmp input.png -resize 250000x250000 output.jpg

ImageMagick默认是在内存中处理图片,为了不让大图片耗尽内存,可以给ImageMagick分配可使用的内存大小,超过内存则自动开辟磁盘缓存空间:

convert -define registry:temporary-path=/data/tmp -limit memory 16mb input.png -resize 250000x250000 output.jpg

当然也可以只使用硬盘,不用内存:

convert -define registry:temporary-path=/data/tmp -limit area 0 input.png -resize 250000x250000 output.jpg

实际使用中,就遇到convert命令在生成失败或者并发大,以及处理大图片的时候,有些临时文件删除不彻底,导致网站根目录会有临时文件残留,可通过-define registry:temporary-path=/tmp指定临时目录解决。

php安装imagick扩展相关推荐

  1. osx php7 imagick,[PHP] MacOS 自带php环境安装imagick扩展踩坑记录 | 码农部落

    前言 最近学习yii2,在搭建环境后,发现在访问contact页面时报错,如下: "Either GD PHP extension with FreeType support or Imag ...

  2. phpstudy安装imagick扩展

    phpstudy默认是没有安装imagick扩展的,需要自己下载imagick扩展. 第一步.安装imageMagick软件 在安装imagick扩展之前需要先安装imageMagick 下载地址:h ...

  3. wamp环境下安装imagick扩展

    先上图,如下是安装成功后的phpinfo()界面: 安装步骤: 1.先确定安装版本,比如我的的php : php7.0.12  x86 ts 那么就需要三方版本 要一致:imagick软件本身( 如x ...

  4. phpstudy安装imagick扩展库怎么装

    最近的PHP项目中,需要用到切图和缩图的效果,在linux测试服务器上很轻松的就安装好php imagick扩展.但是在本地windows开发环境,安装过程遇到好多问题,在此与大家分享. 1. 下载 ...

  5. php imagick 滤镜,PHP安装imagick扩展踩过的坑

    微信公众号:网管小贾 个人博客:www.sysadm.cc 环境背景:WAMP(PHP7.1.9 + Apache2.4.27) 最近需要使用到图形添加水印等操作,于是找到了 Intervention ...

  6. linux php imagick 扩展安装,linux下为php5.3安装Imagick扩展

    imagick是一个PHP的扩展,它调用ImageMagick提供的API来进行图片的操作 ImageMagick是一套软件系列,主要用于图片的创建.编辑以及转换等,详细的解释见ImageMagick ...

  7. php7 imagick扩展,php7安装imagick扩展

    使用php7,通过加载pdf文件,生成图片,需要用到imagick扩展,下面是如何安装该扩展 php使用7.1版本,操作系统为centos6版本 1.首先linux下,通过yum 安装依赖包 yum ...

  8. php7.2 如何安装imagick扩展

    imagick扩展包地址: https://pecl.php.net/package/imagick 1.安装所需依赖,如果在编译时还提示缺少其他依赖,请自行安装 yum install autoco ...

  9. windows环境php安装imagick扩展

    1. 检查环境 phpinfo()检查安装的php版本是线程安全(TS) or 非线程安全(NTS),64位 or 32位. 2. 下载安装php_imagick.dll扩展 下载地址:https:/ ...

最新文章

  1. 区块链经济时代得“先机”者得天下!
  2. angular2集成highchart
  3. 有符号数据的符号位扩展
  4. ADDCOMPONENT之后立即(同步)调用AWAKE,但START却是所有AWAKE完成后才调用 的(异步)...
  5. centos eclipse 安装
  6. P7044-[MCOI-03]括号【组合数学】
  7. 物联网-移远M26模块OpenCPU开发第1讲
  8. 互联网十几年 我们错失了哪些创业机会
  9. Python迭代列表
  10. rstudio线性回归_R语言如何做多元线性回归?以例子说明?
  11. 【信号与系统|吴大正】4:信号分解、傅里叶变换与信号谱(上)
  12. ie8兼容性视图灰色修复_win8系统设置IE8浏览器兼容性视图的方法
  13. Git学习笔记:版本回滚
  14. petalinux 前端包管理器(dnf)
  15. 解决 Error starting userland proxy: listen tcp 0.0.0.0:6379: bind: address already in use
  16. 搜狐全体员工遭遇工资补助诈骗,CEO张朝阳回应:没那么严重
  17. 关于TKK失败问题(亲测有用 超详细)
  18. 卖旧手机时恢复出厂设置就能不泄露数据?微信官方辟谣了!
  19. [BZOJ3895]取石子
  20. 《数据可视化技术》 太平洋汽车销售分析

热门文章

  1. 蓝桥试题 算法提高 珠心算测验 JAVA
  2. CAD修改默认捕捉点设置
  3. 关于MFCC的一些笔记(python)
  4. 自学maya总是找不到对的方向怎么办?是你没有掌握以下几点
  5. java web指纹采集_Web指纹识别的介绍与编写
  6. 505 php 错误,【WordPress的505错误】
  7. 【CTF】BugkuCTF - 分析 - 抓到一只苍蝇
  8. 谛听安全如何从5W模式入手,助力内容审核
  9. GoogleDrive云盘同步本地博客文件
  10. 计算机游戏活动总结,游戏比赛活动总结