This project aims to provide a PNG decoder backed by a feature-rich GPU-based renderer.
As a decoder, this project uses the PNG test suite to validate its ability to handle
various PNG features and edge cases. Currently, png
can decode and render images with an 8-bit color depth.
The renderer can resize images and trigger grayscaling when pressing G.
To render an image, run cargo run --release <image_path>
. For example:
# cd png
cargo run --release ./obama.png
# Run the PNG test suite
cargo r --bin png-test-suite
# Profile the decoder
./profile.sh ./reagan.png
# Fuzz the decoder
./fuzz.sh
http://www.libpng.org/pub/png/pngintro.html
https://www.w3.org/TR/2003/REC-PNG-20031110/
http://www.libpng.org/pub/png/pngpic2.html
https://www.w3.org/Graphics/PNG/platform.html