A pure Crystal library for reading and writing PNG images with support for various color types, filters, and interlacing.
stumpy_png is a Crystal library for reading and writing PNG image files entirely in Crystal without external dependencies. It provides a Canvas-based API for manipulating image data and supports various PNG features like different color types, filters, and interlacing. The library solves the need for native PNG handling in Crystal applications, avoiding reliance on system libraries or bindings.
Crystal developers who need to process PNG images in their applications, such as those building graphics tools, image servers, or data visualization projects. It's particularly useful for projects requiring pure Crystal implementations without external C dependencies.
Developers choose stumpy_png because it's a pure Crystal implementation with no external dependencies, offers a clean and intuitive API, and fully supports the PNG specification including advanced features like 16-bit depth and Adam7 interlacing. It integrates seamlessly with the stumpy_core library for consistent image manipulation.
Read/Write PNG images in pure Crystal
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Written entirely in Crystal without external bindings, ensuring portability and avoiding reliance on C libraries, except for zlib which is a minimal system dependency.
Supports all standard PNG features including color types, filter methods, interlacing, and 8/16-bit depths, as detailed in the README's feature checklist.
Offers straightforward read/write methods with configurable parameters like bit depth and color type, making basic image operations simple to implement.
Seamlessly uses Canvas and RGBA types from stumpy_core, providing a consistent interface for pixel-level manipulation across the stumpy ecosystem.
Explicitly does not handle PNG ancillary chunks, limiting the ability to read or write metadata such as text comments or color profiles, as admitted in the README.
As a pure Crystal library, it may not match the speed of optimized C-based alternatives for processing very large or numerous images, lacking GPU or advanced multi-threading features.
Requires zlib to be installed on the system, which can cause setup issues in some environments, as highlighted in the troubleshooting section.