spng-rs
Rust bindings to libspng.
Version
| spng-rs | libspng |
|---|---|
| Unreleased | 0.7.4 |
0.2.0-alpha.2 |
0.7.0-rc2 |
0.2.0-alpha.1 |
0.7.0-rc2 |
0.1.0 |
0.6.3 |
Performance
This test image is decoded ~ 3-5x faster than with the png crate.
png_decode time: [1.7354 ms 1.7372 ms 1.7392 ms]
spng_decode time: [569.27 µs 570.86 µs 572.45 µs]
spng_decode time: [311.84 µs 312.45 µs 313.13 µs] (--features=zlib-ng)
Examples
A one-liner for simple use cases:
let file = open?;
let = decode?;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
The Decoder interface is modeled after the png crate:
let file = open?;
let decoder = new
.with_output_format;
let = decoder.read_info?;
let out_buffer_size = reader.output_buffer_size;
let mut data = vec!;
reader.next_frame?;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
The RawContext interface is a safe and minimal wrapper over the full libspng C API.
let file = open?;
let out_format = Rgba8;
let mut ctx = new?;
ctx.set_png_stream?;
let ihdr = ctx.get_ihdr?;
let out_buffer_size = ctx.decoded_image_size?;
let mut data = vec!;
ctx.decode_image?;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;