A small, public domain or Apache 2.0 licensed C++ JPEG compression and fuzzed low-RAM decompression codec.
jpeg-compressor is a lightweight, open-source C++ library for JPEG image compression and decompression. It provides a minimal, self-contained codec that writes baseline JPEGs and includes a fuzz-tested decompressor resilient to corrupted inputs. The project solves the need for a reliable, low-memory JPEG solution in embedded systems or applications where larger libraries like libjpeg are impractical.
Developers working on embedded systems, microcontrollers, or applications requiring a small, safe JPEG codec with minimal dependencies. It's also suitable for those needing a public domain or Apache 2.0 licensed alternative to libjpeg.
Developers choose jpeg-compressor for its exceptional combination of small code size, low memory footprint, and fuzzed decompression safety. Its permissive licensing and single-file design make integration straightforward, while support for streaming decompression enables use in resource-constrained environments where other libraries fail.
C++ JPEG compression/fuzzed low-RAM JPEG decompression codec with Public Domain or Apache 2.0 license
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Consumes less than 64KB of RAM, as stated in the README, making it ideal for embedded systems and microcontrollers with strict memory limits.
The decompressor has been rigorously tested with zzuf and AFL, ensuring it doesn't crash or have memory safety issues with corrupted inputs, a key feature for handling untrusted data.
Compression and decompression are each provided in single C++ source files (jpge.cpp and jpgd.cpp), simplifying code auditing and integration into projects.
Processes JPEGs MCU row by row, avoiding the need to load entire images into memory, which is crucial for resource-constrained environments like 32-bit microcontrollers.
The compressor only writes baseline JPEGs, lacking support for progressive encoding, which is a common requirement in modern web applications for faster image loading.
While it supports SSE2 optionally, it doesn't have the extensive optimizations of libraries like libjpeg-turbo, making it slower for high-throughput or real-time image processing tasks.
The README provides basic usage examples but lacks in-depth API documentation, tutorials, or guidance for complex use cases, which can slow down development in larger projects.
Jpeg-Compressor is an open-source alternative to the following products: