This is a work in progress library to create, process, read and write different image formats with Zig programming language.
This project assume current Zig master (0.10.0+).
How to add to your project:
- Clone this repository or add as a submodule
- Add to your
build.zig
exe.addPackagePath("zigimg", "zigimg/zigimg.zig");
To run the test suite, checkout the test suite and run
zig build test
Image Format | Read | Write |
---|---|---|
ANIM | ❌ | ❌ |
BMP | ✔️ (Partial) | ❌ |
GIF | ❌ | ❌ |
ICO | ❌ | ❌ |
IILBM | ❌ | ❌ |
JPEG | ❌ | ❌ |
PAM | ❌ | ❌ |
PBM | ✔️ | ❌ |
PCX | ✔️ | ❌ |
PGM | ✔️ (Partial) | ✔️ (Partial) |
PNG | ✔️ | ❌ |
PPM | ✔️ (Partial) | ❌ |
QOI | ✔️ | ✔️ |
TGA | ✔️ | ❌ |
TIFF | ❌ | ❌ |
XBM | ❌ | ❌ |
XPM | ❌ | ❌ |
- version 4 BMP
- version 5 BMP
- 24-bit RGB
- 32 RGBA
- Doesn't support any compression
- Everything is supported
- Support monochrome, 4 color, 16 color and 256 color indexed images
- Support 24-bit RGB images
- Support 8-bit and 16-bit grayscale images
- 16-bit ascii grayscale loading not tested
- Support all pixel formats supported by PNG (grayscale, grayscale+alpha, indexed, truecolor, truecolor with alpha) in 8-bit or 16-bit.
- Support the mininal chunks in order to decode the image.
- Not all images in Png Test Suite is covered but should be good enough for now.
- Support 24-bit RGB (8-bit per channel)
- Missing 48-bit RGB (16-bit per channel)
- Imported from https://github.com/MasterQ32/zig-qoi with blessing of the author
- Supports uncompressed and compressed 8-bit grayscale, indexed with 16-bit colormap, truecolor with 24-bit or 32-bit bit depth.