#png #decoder #png-decoder

不使用 std zune-png

快速、正确且安全的 PNG 解码器

7 个不稳定版本 (3 个破坏性更新)

0.5.0-rc12024年4月16日
0.5.0-rc02024年4月7日
0.4.10 2024年1月15日
0.4.0 2023年11月8日
0.1.9 2023年3月29日

#257 in 图像

Download history 205/week @ 2024-04-29 305/week @ 2024-05-06 290/week @ 2024-05-13 352/week @ 2024-05-20 309/week @ 2024-05-27 599/week @ 2024-06-03 397/week @ 2024-06-10 263/week @ 2024-06-17 148/week @ 2024-06-24 119/week @ 2024-07-01 98/week @ 2024-07-08 112/week @ 2024-07-15 117/week @ 2024-07-22 405/week @ 2024-07-29 274/week @ 2024-08-05 225/week @ 2024-08-12

每月下载量1,032次
用于 8 个 crate (6 个直接使用)

MIT OR Apache-2.0 OR Zlib

410KB
6K SLoC

Zune-png

快速、正确且安全的 PNG 解码器

局限性

  • 此解码器(目前)将小于 8 bpp 的图像自动扩展为 8 位(1 字节)。这取决于您的用例。

功能

  • 快速 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 前缀。基准测试定期更新以跟上优化的添加。

依赖项