安装imagick支持webp php处理

https://java-er.com/blog/php-webp-imagick/
本文提及Linux系统版本 CentOS7

MAC 系统重新安装一下imagick就好了,似乎等于更新了我之前的版本就有效了。

brew reinstall imagemagick

convert -list format | grep webp

Centos 安装了Imagick但是不含webp, 参考前一篇安装文章php 安装imagick图形处理库

1. 卸载以前的版本

yum remove ImageMagick

2. 手工下载新版本安装

wget https://www.imagemagick.org/download/ImageMagick.tar.gz

tar zxvf ImageMagick.tar.gz

cd ImageMagick-7.0.9-26/

./configure --with-webp

./libtool: line 1765: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

这个问题,客户端导致的,别找服务器方案

MAC下设置下就好了

转存失败重新上传取消​

3. 安装webp

yum -y install libwebp-devel libwebp-tools

4. 重新安装php的插件imagick

#php -m| grep imagick

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/imagick.so' - /usr/lib64/php/modules/imagick.so: cannot open shared object file: No such file or directory in Unknown on line 0

报错了

卸载之前安装的

pecl uninstall imagick

再安装一遍

pecl install imagick

php -m| grep imagick

好了

php --ri imagick

imagick

imagick module => enabled

imagick module version => 3.4.4

imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel

Imagick compiled with ImageMagick version => ImageMagick 7.0.9-26 Q16 x86_64 2020-02-26 https://imagemagick.org

Imagick using ImageMagick library version => ImageMagick 7.0.9-26 Q16 x86_64 2020-02-26 https://imagemagick.org

ImageMagick copyright => © 1999-2020 ImageMagick Studio LLC

ImageMagick release date => 2020-02-26

ImageMagick number of supported formats:  => 239

ImageMagick supported formats => 3FR, 3G2, 3GP, A, AAI, AI, ART, ARW, AVI, AVS, B, BGR, BGRA, BGRO, BMP, BMP2, BMP3, BRF, C, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CR3, CRW, CUBE, CUR, CUT, DATA, DCM, DCR, DCRAW, DCX, DDS, DFONT, DNG, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, FAX, FILE, FITS, FLV, FRACTAL, FTP, FTS, G, G3, G4, GIF, GIF87, GRADIENT, GRAY, GRAYA, GROUP4, HALD, HDR, HISTOGRAM, HRZ, HTM, HTML, HTTP, HTTPS, ICB, ICO, ICON, IIQ, INFO, INLINE, IPL, ISOBRL, ISOBRL6, JNG, JNX, JPE, JPEG, JPG, JPS, JSON, K, K25, KDC, LABEL, M, M2V, M4V, MAC, MAP, MASK, MAT, MATTE, MEF, MIFF, MKV, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, O, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, POCKETMOD, PPM, PS, PS2, PS3, PSB, PSD, PTIF, PWP, R, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGB565, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, SCR, SCREENSHOT, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TM2, TTC, TTF, TXT, UBRL, UBRL6, UIL, UYVY, VDA, VICAR, VID, VIFF, VIPS, VST, WBMP, WMV, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, Y, YCbCr, YCbCrA, YUV

Directive => Local Value => Master Value

imagick.locale_fix => 0 => 0

imagick.skip_version_check => 0 => 0

imagick.progress_monitor => 0 => 0

5. php 测试效果

5.1 把图片a.png 缩小为宽度100的图片

header('Content-type: image/jpeg');

date_default_timezone_set("Asia/Shanghai");

$image = new Imagick('a.png');

$image->thumbnailImage(100, 0);

echo $image;

5.2 转换,把png 改成jpg

<?php

date_default_timezone_set("Asia/Shanghai");

$thumb = new Imagick();

$thumb->readImage('a.png');

$thumb->writeImage('b.jpg');

$thumb->clear();

$thumb->destroy();

?>

5.3 转换,把png 改成webp

<?php

date_default_timezone_set("Asia/Shanghai");

$thumb = new Imagick();

$thumb->readImage('a.png');

$thumb->writeImage('b.webp');

$thumb->clear();

$thumb->destroy();

?>

# ls -l

-rw-r--r-- 1 root  root  33761 Feb 26 16:59 a.png

-rwxrwxrwx 1 root  root  10158 Feb 26 16:50 a.webp

-rw-r--r-- 1 apache apache 46142 Feb 26 17:37 b.jpg

-rw-r--r-- 1 apache apache 10158 Feb 26 17:38 b.webp

-rwxrwxrwx 1 root  root    172 Feb 26 17:38 webp.php

可以看到 b.webp的文件比b.jpg的文件小很多,说明成功的转换了webp文件。

5.4 用一下setImageFormat 设置webp

当使用了setImageFormat才能看出来webp其实没有安装成功。

date_default_timezone_set("Asia/Shanghai");

$thumb = new Imagick();

$thumb->readImage('a.png');

$thumb->setImageFormat("webp");

$thumb->writeImage('b.webp');

$thumb->clear();

$thumb->destroy();

Fatal error: Uncaught exception 'ImagickException' with message 'Unable to set image format' in /www/webp.php:6 Stack trace: #0 /www/javaer.com/webp.php(6): Imagick->setimageformat('webp') #1 {main} thrown in /www/javaer.com/webp.php on line 6

6. 重新编译服务器imagick

6.1 重装imagick

./configure --with-webp=yes

make

make install

6.2 查看,更新webp

convert -list format | grep WebP

还是没有

更新一下lib的绑定【很关键,我折腾了好几遍,感觉就是差了这一步】

ldconfig /usr/local/lib

convert -list format | grep WebP

好了。

特别关键,在重装以后要执行这句话。

ldconfig /usr/local/lib

6.2 看看php的插件是否支持webp

服务器上执行

php --ri imagick | grep WEBP

没有

那么重新安装php的imagick

pecl uninstall imagick

pecl install imagick

php --ri imagick | grep WEBP

有了

转存失败重新上传取消​

网络异常 取消重新上传

6.3 写个test.php 看看phpinfo里有没有

但是phpinfo()里没有

重启动fpm, 重启动nginx

phpinfo也有了

转存失败重新上传取消​

网络异常 取消重新上传

当php使用了setImageFormat 设置webp的格式时候,就不会报错了。彻底安装成功。

webp官方

https://developers.google.com/speed/webp/download

https://java-er.com/blog/php-webp-imagick/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容