A single-header, zero-allocation C library for applying fast, chainable image filters compatible with SVG and CSS semantics.
PlutoFilter is a lightweight, single-header image filter library written in C. It applies fast visual effects like blur, color adjustments, blending, and compositing without any dynamic memory allocation. The library is designed to be portable and efficient, making it suitable for performance-sensitive applications and systems with limited resources.
C/C++ developers working on graphics applications, embedded systems, game engines, or tools requiring efficient image processing without external dependencies. It's also valuable for projects needing SVG/CSS-compatible filter effects in native code.
Developers choose PlutoFilter for its zero-allocation design, single-header simplicity, and standards-compliant filter semantics. It offers a comprehensive feature set comparable to larger libraries while maintaining minimal footprint and no runtime overhead.
A single-header, zero-allocation image filter library in C
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Operates without any dynamic memory allocation, ensuring predictable performance and suitability for embedded systems, as highlighted in the README.
Entire library is contained in one header file, simplifying integration into C/C++ projects without build system complexities.
Implements filter semantics matching web standards, enabling consistent visual effects across platforms, as stated in the features.
Supports Gaussian blur, color transforms, 16 blend modes, and Porter-Duff compositing, allowing for chainable and complex image processing.
The roadmap lists missing features like morphology and lighting effects, limiting its utility for advanced image processing tasks.
Users must implement their own image loading and saving functions, adding development overhead for basic usage, as shown in the example code.
Written in C99, it requires manual memory management and can be cumbersome to integrate into projects using modern C++ or other languages.