A small, single header-only C++ library for loading and saving OpenEXR (.exr) images with minimal dependencies.
TinyEXR is a small, single header-only library for loading and saving OpenEXR (.exr) images. It solves the problem of integrating high dynamic range image support into applications without requiring large external dependencies or complex build systems. The library is written in portable C++ and is designed to be easily embedded into projects.
Developers working on graphics applications, game engines, rendering tools, or any software that needs to read or write OpenEXR images with minimal overhead. It's particularly useful for projects where dependency management and binary size are concerns.
Developers choose TinyEXR for its simplicity, portability, and ease of integration. Unlike larger OpenEXR libraries, it's a single header file with optional minimal dependencies, making it ideal for embedding. It also offers a security-focused design and supports a wide range of EXR features, including spectral imaging and multiple compression formats.
Tiny OpenEXR image loader/saver library
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Simply include `tinyexr.h` with no external dependencies beyond STL, making it trivial to embed in any C++ project without complex build systems.
Supports OpenEXR v1/v2 images, including scanline, tiled, multi-part, and spectral EXR formats, covering most common use cases in graphics applications.
Fuzz-tested and avoids C++ exceptions and assert, reducing risks when handling untrusted EXR files, with no security issues reported as of v1.0.7.
Works on x86-64, AARCH64, WebAssembly, and big-endian systems across Windows, Linux, macOS, and mobile platforms, ideal for embedded or cross-platform tools.
Lacks full saving capabilities for deep images and multi-part deep EXR, as the README's feature list shows unchecked items like 'Save multi-part deep image'.
The README warns that 'API is still subject to change,' which could lead to breaking changes in future versions, affecting long-term maintenance.
Does not support DWA compression due to patents, and ZFP support is experimental and limited to Linux/macOS, restricting compatibility with some EXR files.