#image-encoding #image #graphics #encoding

无 std qoi

QOI (相当不错图像) 格式的非常快速的编码器/解码器

2 个版本

0.4.1 2022年10月16日
0.4.0 2022年1月6日
0.3.1 2021年11月28日
0.2.0 2021年11月27日
0.0.1 2021年11月25日

#63 in 图像

Download history 112403/week @ 2024-04-20 121747/week @ 2024-04-27 119851/week @ 2024-05-04 125183/week @ 2024-05-11 141184/week @ 2024-05-18 130807/week @ 2024-05-25 137693/week @ 2024-06-01 123807/week @ 2024-06-08 127461/week @ 2024-06-15 116838/week @ 2024-06-22 114551/week @ 2024-06-29 136618/week @ 2024-07-06 140352/week @ 2024-07-13 150305/week @ 2024-07-20 151723/week @ 2024-07-27 144306/week @ 2024-08-03

613,017 每月下载量
1,166 个 crate (7 直接) 中使用

MIT/Apache

72KB
1.5K SLoC

Rust 1K SLoC // 0.0% comments C 558 SLoC // 0.2% comments

qoi

Build Latest Version Documentation Apache 2.0 MIT unsafe forbidden

纯 Rust 实现的快速 QOI 图像格式的编码器/解码器。

  • 现有的 QOI 编码器/解码器中最快的之一。
  • 符合最新的 QOI 格式规范。
  • 没有不安全代码。
  • 直接支持从 / 编码到 std::io 流。
  • no_std 支持。
  • 与参考 C 实现进行往返测试;模糊测试。

示例

use qoi::{encode_to_vec, decode_to_vec};

let encoded = encode_to_vec(&pixels, width, height)?;
let (header, decoded) = decode_to_vec(&encoded)?;

assert_eq!(header.width, width);
assert_eq!(header.height, height);
assert_eq!(decoded, pixels);

基准测试

             decode:Mp/s  encode:Mp/s  decode:MB/s  encode:MB/s
qoi.h              282.9        225.3        978.3        778.9
qoi-rust           427.4        290.0       1477.7       1002.9
  • 参考 C 实现: phoboslab/qoi@00e34217
  • 基准测试时间是在 Apple M1 笔记本上收集的。
  • 包含 2846 张图片的套件,由上游提供(tarball):所有 pngs,除了两幅有损坏的校验和。
  • 总共 1.32 GPixels,4.46 GB 的原始像素数据。

还进行了所有其他 Rust QOI 实现的基准测试,以进行比较,并且在此文档编写时,此库证明了它是速度最快的一个,速度快得相当明显。

Rust 版本

最新 crate 版本所需的最低 Rust 版本是 1.61.0。

无 std

此 crate 支持 no_std 模式。默认情况下,通过 std 功能启用 std。您可以通过禁用 default-features 来针对 core,在这种情况下,与 std::iostd::error::Error 和堆分配相关的所有内容都禁用。还有一个可以激活的附加 alloc 功能,可以将堆分配支持恢复。

许可证

此项目同时获得 MIT 和 Apache 2.0 许可。

依赖关系

~135KB