PHP8中处理AVIF格式图片的配置安装和注意点

本文阅读 4 分钟
首页 开发运维 正文

AVIF是基于开源的视频格式AV1的新型图片格式,由于开源免费且性能表现优异,目前得到了几乎所有浏览器大厂的支持,已经成为下一代图片格式的发展趋势。
AVIF图片格式

一、PHP8.1开始支持AVIF图片格式

如果想要在PHP程序中使用AVIF图片格式,需要把你的PHP版本升级到PHP8.1。
PHP的两大图片扩展,GD库ImageMagick扩展都已经支持AVIF。从目前情况来看,安装配置的时候GD库个人感觉麻烦一些。

二、GD库扩展支持AVIF图片格式

大家熟知的GD扩展,依赖于 libavif 包来提供底层的AVIF编解码器。GD扩展需要libavif版本0.8.2以上。

Ubuntu/Debian系统使用以下命令安装libavif包

apt install libavif-dev

RHEL/Fedora/CentOS系统使用以下命令安装libavif包

dnf install libavif-devel

安装好依赖项后,需要开启GD拓展的同时,附带上对于AVIF的支持。

可以使用 ./configure 脚本中新的 --with-avif 标志在 AVIF 支持下编译 PHP。

./buildconf --force

./configure --enable-gd --with-avif

请注意,上面的 ./configure 命令只是一个实例。

对于生产系统,请确保也启用其他扩展,尽量使用Docker来确保开发和生产环境的配置一样。
很多集成环境,例如宝塔面板,目前就算你的PHP版本是8.1以上,如果你安装了GD扩展,你也是没办法使用AVIF图片格式的,还没有给扩展上。

三、ImageMagick扩展已经支持avif扩展

如果你的PHP程序使用ImageMagick扩展,直接就可以处理AVIF格式图片了。本人gd库编译到一半直接放弃了,改用ImageMagick扩展。

四、额外提醒,PHP8.1对AVIF格式的支持并不完善,建议直接安装PHP8.2+

PHP中用于获取AVIF图片尺寸等信息的 getimagesize()函数,在PHP8.1下无法获取AVIF图片格式的尺寸等信息。
图片的宽高,位宽,通道,尺寸等信息,都无法获取,8.2才得以支持。

最后附加AVIF图片格式的优缺点

画质最强的图片格式,依然是PNG。支持几乎无限的图片尺寸,对HDR和宽色域的支持。缺点也是十分明显的,体积庞大。
AVIF图片格式大概比JPEG小三分之一,对于互联网来说这个体积的诱惑是无比巨大的。AVIF目前得到了,所有主流浏览器的支持,已经可以完全商业化使用了。
不过,需要注意AVIF最大支持8K分辨率的图片,不知道后续时候会改变这个,这里算AVIF和PNG的一个主要区别。AVIF同样支持444采样,以及HDR和宽色域,在游戏截图等领域,是可以部分替代PNG的。
AVIF是开源的格式,没有专利费的困扰,而且得到了所有主流大厂的支持。
总而言之,AVIF格式绝对是站长福音,尤其是大量图片的网站,对减少存储空间和带宽流量,加快访问速度有很大优势。

本文来自投稿,不代表本站立场,如若转载,请注明出处:
-- 展开阅读全文 --
PHP 8.0:不推荐使用函数/方法签名中可选参数之后的必需参数
« 上一篇 07-23
WordPress的wp-json路径是干什么的?REST API介绍及使用
下一篇 » 03-05

热门文章

标签TAG