https://github.com/image-rs/fdeflate
Fast deflate implementation specialized for PNG image data
https://github.com/image-rs/fdeflate
Last synced: 3 months ago
JSON representation
Fast deflate implementation specialized for PNG image data
- Host: GitHub
- URL: https://github.com/image-rs/fdeflate
- Owner: image-rs
- License: apache-2.0
- Created: 2022-12-18T23:15:38.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-01-13T22:44:51.000Z (5 months ago)
- Last Synced: 2025-03-29T11:09:13.142Z (3 months ago)
- Language: Rust
- Size: 167 KB
- Stars: 19
- Watchers: 5
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# fdeflate
[](https://crates.io/crates/fdeflate)
[](https://docs.rs/fdeflate)
[](https://github.com/image-rs/fdeflate/actions)A fast and safe deflate implementation for PNG.
This crate contains an optimized implementation of the [deflate algorithm](https://en.wikipedia.org/wiki/Deflate) tuned for PNG images.
At least on PNG data, our decoder rivals the performance of `zlib-ng` and `zlib-rs` without using any `unsafe` code.
When compressing it makes a bunch of simplifying assumptions that
drastically improve encoding speed while still being compatible with zlib:- Exactly one block per deflate stream.
- No distance codes except for run length encoding of zeros.
- A single fixed huffman tree trained on a large corpus of PNG images.
- All huffman codes are <= 12 bits.### Inspiration
The algorithms in this crate take inspiration from multiple sources:
* [fpnge](https://github.com/veluca93/fpnge)
* [zune-inflate](https://github.com/etemesi254/zune-image/tree/main/zune-inflate)
* [RealTime Data Compression blog](https://fastcompression.blogspot.com/2015/10/huffman-revisited-part-4-multi-bytes.html)