1 个不稳定版本
0.2.1 | 2023年9月20日 |
---|
#594 in 图像
每月 121 次下载
在 8 个 crate 中使用(通过 makepad-widgets)
375KB
5.5K SLoC
Zune-png
快速、正确且安全的 png 解码器
限制
- 此解码器(目前)自动将小于 8 bpp 的图像扩展到 8 位(一个字节)。这取决于您的用例,可能需要或不需要。
- 不支持非标准的 APNG(动画)扩展。
特性
- 快速 deflate 解码器
- 向量化过滤和位操作
- 内存友好(少量分配)
- 平台特定内建函数之外无不安全操作
使用方法
首先,在您的 Cargo.toml 中包含以下内容
[dependencies]
zune-png = "0.2.0"
然后您可以在您的库/二进制文件中访问解码器。
use zune_png::PngDecoder;
// decode bytes
let decoder = PngDecoder::new(b"bytes").decode().unwrap();
调试与发布
解码器严重依赖于平台特定内建函数,即 AVX2 和 SSE 以在解码中获得速度提升,但在调试构建中表现不佳。为了在调试模式下编译程序时获得合理的性能,请将以下内容添加到您的 Cargo.toml
# `zune-png` package will be always built with optimizations
[profile.dev.package.zune-png]
opt-level = 3
基准测试
与 Rust 和 C 解码器比较的更新基准测试可以在 这里 找到,前缀为 png
。基准测试定期更新以跟上优化添加。