2021 年 11 月 29 日 ,Dominic Szablewski 创建一种新的图像文件格式规范 “QOI”,QOI 的全称是 Quite OK Image Format,直译为“相当棒的图像格式”。QOI 可以用于将 RGB 和 RGBA 图像无损地压缩为与 PNG 类似的大小,相同的文件大小下,QOI 的压缩和解压缩比 PNG 要快 3-4 倍。另外,QOI 可以和 PNG 格式相互转化。
QOI 非常简洁,它源代码只有大约 300 行 C语言;文件格式规范也非常简短,只有一页PDF。但简短并不意味着简单,与 C/C++ 图像处理库 stb_image / stb_image_write 和 libpng 相比,QOI 的编码速度提高了 20-50 倍,解码速度提高了 3-4 倍,压缩率提高了 20%。
<>
<无可否认,QOI 在压缩/解压缩性能这一块有一些优势,但它仍然存在相当多的问题。比如,作为一个全新的图像文件格式, QOI 对伽马/色度/ICC 等内容的支持几乎是空白的。从实现过程来看, QOI 是将整个图像文件加载到 RAM 中,并且没有针对性能进行优化,这使得它在处理亿级像素的图像时对设备的要求极高。
以上种种导致它还不能作为一个成熟的文件格式以供日常使用,短时间内也不会出现在浏览器端(web 对压缩比较为重视,QOI 对此并不占优势),未来或许它可以出现在游戏的图像处理或者其他主机程序中,因为这些场景更注重性能优势。
事实上,QOI 一开始只是 Dominic 的一个玩具项目,但现在它将变成一个正式的项目 —— 距离首次提交还未满一个月,QOI 就已收获了 3K star,并引发了热烈的讨论。且过去的几周已陆续出现了许多不同语言和库的 QOI 实现。包括 Zig、 Rust(QOI 的 Rust 实现)、 Rust(QOI 的 Rust 编码器/解码器)、 Rust(快速实现 QOI 格式)、 Go、 TypeScript、 Haskell、 Ć(一种编程语言)、 C#、 Elixir、 Swift、 Java 和 Pascal ,以及 Python 和 Lua 的 包装器 。
相关链接
- https://github.com/phoboslab/qoi - QOI 源代码
- https://qoiformat.org/ - QOI 官网
- https://qoiformat.org/qoi-specification.pdf - QOI 文件格式规范
- https://github.com/floooh/qoiview - 原生 QOI 图像查看器
- https://github.com/pfusik/qoi-ci/releases/tag/qoi-ci-1.0.0 - GIMP、Paint.NET 和 XnView MP 的 QOI 插件安装程序
- https://github.com/iOrange/QoiFileTypeNet/releases/tag/v0.2 - Paint.NET 的 QOI 插件