AVIF(AV1 图片文件格式) 是一种现代图片文件格式规范,用于存储图片,与 JPG、JPEG、PNG 和 WebP 等其他格式相比,可以实现更大幅度的文件缩减。AVIF 规范的 1.0.0 版于 2019 年 2 月最终确定,并由开放媒体联盟发布给公众。
在本文中,您将了解一些用于创建 AVIF 图片的基于浏览器的工具和命令行工具。
为什么使用 AVIF 而不是 JPG、PNG、WebP 和 GIF?
- 无损压缩和有损压缩
- JPEG 存在严重的条带现象
- WebP 更好,但与 AVIF 相比,仍然存在明显的块状感
- 多个颜色空间
- 8 位、10 位、12 位颜色深度
注意事项
Jake Archibald 几年前写了一篇关于这种新图片格式的文章,并帮助我们识别出压缩图片的一些缺点,通常您应该注意以下两个缺点。
- 如果用户在页面的上下文中查看图片,并且由于压缩而觉得图片很难看,那么这种压缩级别是不可接受的。但是,比这个界限略微高一点是可以的。
- 与原始图片相比,图片丢失一些明显的细节是可以的,**除非这些细节对图片的上下文很重要**。
另请参阅:Addy Osmani 在 Smashing Magazine 上深入探讨了使用 AVIF 和 WebP。
浏览器解决方案
Squoosh

Squoosh 是一款流行的图片压缩网页应用,它允许您将各种格式的图片转换为其他广泛使用的压缩格式,包括 AVIF。
功能
- 文件大小限制:4MB
- 图片优化设置(位于右侧)
- 下载控件 - 这包括查看生成文件的尺寸以及与原始图片相比的缩减百分比
- 免费使用
AVIF.io

AVIF.io 是一款图片工具,不需要任何代码。您只需上传您选择的 PNG、JPG、GIF 等格式的图片,它就会返回它们的压缩版本。
功能
- 转换设置(位于上传横幅的右上角)
- 免费使用
您可以在 AVIF.io 常见问题解答页面 上找到问题的答案。
命令行解决方案
avif-cli
avif-cli
由 lovell 开发,它允许您将存储在文件夹中的图片(PNG、JPEG 等)转换为指定缩减尺寸的 AVIF 图片。
以下是要求和您需要执行的操作
- Node.js 12.13.0+
安装软件包
npm install avif
在您的终端中运行命令
npx avif --input="./imgs/*" --output="./output/" --verbose
./imgs/*
- 代表所有图片文件的位置./output/
- 代表输出文件夹的位置
功能
- 免费使用
- 可以设置转换速度
您可以在 avif-cli GitHub 页面 上了解有关更多命令的信息。
sharp
sharp 是另一个将常见格式的大图片转换为更小、更适合 Web 的 AVIF 图片的实用工具。
以下是要求和您需要执行的操作
- Node.js 12.13.0+
安装软件包
npm install sharp
创建一个名为 sharp-example.js
的 JavaScript 文件,并将以下代码复制到文件中
const sharp = require('sharp')
const convertToAVIF = () => {
sharp('path_to_image')
.toFormat('avif', {palette: true})
.toFile(__dirname + 'path_to_output_image')
}
convertToAVIF()
其中 path_to_image
代表图片的路径及其名称和扩展名,例如:
./imgs/example.jpg
path_to_output_image
代表您希望图片存储的路径,以及它的名称和新扩展名,例如:
/sharp-compressed/compressed-example.avif
在您的终端中运行命令
node sharp-example.js
然后,您应该在输出位置找到一个压缩的 AVIF 文件!
功能
- 免费使用
- 使用
sharp
可以旋转、模糊、调整大小、裁剪、缩放图片等等。
另请参阅:Stanley Ulili 关于 如何在 Node.js 中使用 Sharp 处理图片 的文章。
结论
AVIF 是一项前端开发人员应该考虑在他们的项目中使用的技术。这些工具允许您将现有的 JPEG 和 PNG 图片转换为 AVIF 格式。但与在您的工作流程中采用任何新工具一样,需要根据您的特定用例对利弊进行适当评估。
希望您喜欢阅读这篇文章,就像我喜欢写作一样。非常感谢您的时间,希望您度过愉快的一天!
感谢您的概述。有用。
还有一个 Photoshop 插件可用
https://github.com/0xC0000054/avif-format
版本
https://github.com/0xC0000054/avif-format/releases
感谢您的评论。
Squoosh 也提供了一个 CLI 选项,位于
https://github.com/GoogleChromeLabs/squoosh/tree/dev/cli
“与 AVIF 相比,仍然存在明显的块状感”
参考 caniuse,情况正好相反。是吗?
我的意思是图像质量下降,但在这种情况下,它反映在特定区域。
与本文链接的一篇文章用视觉示例最好地解释了这一点,因为我的重点是用于创建 avif 图像的有用工具。
查看 Addy Osmani 关于使用现代图像格式:AVIF 和 WebP 的文章 - https://www.smashingmagazine.com/2021/09/modern-image-formats-avif-webp/#comparing-formats
特别是“比较格式”部分。
希望这有帮助!
“avif-cli by lovell 允许您获取存储在文件夹中的 AVIF 图像并将它们转换为 AVIF 图像”
它也允许您获取非 AVIF 图像,对吧?
感谢您的观察。
它已得到纠正。
一些流行工具的概述真是太好了。
我使用的另一个基于浏览器的解决方案是 MConverter。
与文章中提到的另外两个 Web 应用程序不同,它使用 文件系统访问 API,因此您可以直接将 AVIF 图像保存到您选择的任何文件夹中。这为我节省了一些时间,因为我以前需要手动将转换后的文件从“下载”文件夹移动。