背景

在 OneinStack 的默认配置下,nginx 的 GD 没有编译 WebP 支持,同样的 iMagick 也默认没有编译 WebP 支持。而 WebP 最初在 2010 年 9 月发布,其支持库于 2018 年 4 月发布 1.0 版本。截至 2021 年 5 月,已有 94% 的浏览器支持此格式。

虽然 WebP 是一种适合用于网络分发的图片格式,但日常并不会用到。更多的还是以 JPG、PNG 等文件格式上传的图片,所以还需要使用 iMagick 之类的程序进行转换。现在让我们为 OneinStack 下的 iMagick 添加 WebP 支持。

编译安装步骤

编译支持 WebP 模块的 iMagick 需要有 libwebp 的支持。这里直接使用包管理命令安装:

apt-get install libwebp-dev -y

然后进入 ~/oneinstack/include 文件夹,编辑 ImageMagick.sh 文件:

cd ~/oneinstack/include
nano ImageMagick.sh

在带有 ./configure 的两行后面添加 --with-webp=yes,修改后的效果:

./configure --prefix=${imagick_install_dir} --enable-shared --enable-static --with-webp=yes
./configure --with-php-config=${php_install_dir}/bin/php-config --with-imagick=${imagick_install_dir} --with-webp=yes

如果已经安装有 iMagick,先运行卸载命令,然后再重新编译安装:

~/oneinstack/uninstall.sh --php_extensions imagick #卸载
~/oneinstack/install.sh --php_extensions imagick #安装

等待完成信息显示后,尝试如下命令检查输出结果是否带 WEBP:

php -r "print_r(Imagick::queryFormats());"

参考资料