This is a C++20 library which allows reading png images from a binary stream.
I decided to create this because I wanted to learn how png images are stored. This project was made for educational purposes and may be discontinued at any time.
This project uses premake5
to create build files. All build files created by premake are put into the build
directory.
Solutions and Make files are not pushed to this repo, you should run premake5
when you download this project.
NOTE: Remember to have a compiler which fully supports C++20!
Build output can be found inside either build/Debug
or build/Release
depending on the configuration. If building png
(the static
library's project) the library file will be found in the same directories, and include files can be found inside the include
folder.
If you want to see an example of linking with png
check out the png-dev
project inside premake5.lua
.
Splitting the project into multiple filesCRC implementationWriting images to streamsPLTE Chunk support- Custom ZLib implementation (maybe)
- PNG 1.2 spec: libpng - 1.2 spec
- Test Image: Wikipedia - PNG_transparency_demonstration_1.png
- Adam7 Interlace version was created using GIMP.
- Common Palettes: Wikipedia - Web Colors
- Alpha Blending: Wikipedia - Alpha Compositing
- Dithering:
- Image Scaling: Wikipedia - Bilinear Interpolation
- Image Filters/Effects: