openexr.com

OpenEXR

  • ️about.html

OpenEXR provides the specification and reference implementation of the EXR file format, the professional-grade image storage format of the motion picture industry.

The purpose of EXR format is to accurately and efficiently represent high-dynamic-range scene-linear image data. This is a significant difference to most image formats, which store images that are ready for display. Software that handles OpenEXR images may need to process them differently to images in other formats such as JPEG (see Scene-Linear Image Representation for more details). OpenEXR files have strong support for multi-part, multi-channel use cases, and extensive representation of associated metadata.

OpenEXR is widely used in host application software where accuracy is critical, such as photorealistic rendering, texture access, image compositing, deep compositing, and DI.

OpenEXR is a project of the Academy Software Foundation.

Latest News

_images/news.png

February 8, 2025 - Beta release of support for HTJ2K in OpenEXR

We have a proposal that adds support for lossless JPEG 2000 coding (as the HT256 compressor) to OpenEXR and would welcome your feedback.

The HT256 compressor uses the High-Throughput (HT) block coder and promises high speed and high coding efficiency, and it supports the full range of OpenEXR features, including 32-bit floating-point image channels. The HT block coder, which is standardized in Rec. ITU-T T.814 | ISO/IEC 15444-15, is relatively new, and is estimated to increase the speed of JPEG 2000 by roughly an order of magnitude. It is royalty-free, used in cinema and distribution servicing, and implemented in both commercial and open-source toolkits. The proposed integration with OpenEXR currently uses the OpenJPH open-source library. For ease in managing the dependency, the OpenEXR CMake configuration supports automatically fetching and building OpenJPH internally, or linking against an external installation.

Support for the HT256 compressor is available now for testing and evaluation on the htj2k-beta branch at https://github.com/AcademySoftwareFoundation/openexr/tree/htj2k-beta. We expect to merge this to the main branch in a few weeks and release it officially in August, pending feedback.

Note that this branch is provided for evaluation purposes only. The file format may change before final release, so files written with this evaluation branch may not be readable by future OpenEXR releases.

To help evaluate performance, the branch includes a new tool, exrmetrics, which reports statistics about read/write time and file size/compression ratio. See Tools/exrmetrics. for details. (Note that exrmetrics is also on the main branch, but without HTJ2K support. It will be included with the next official release.)

Please provide comments and feedback at the project GitHub Issues page, or on the ASWF #openexr slack. Ping @palemieux with technical questions.

We are particularly interested in feedback regarding real-world time/space metrics, as well as any pipeline integration or build issues.

Imath

The OpenEXR project includes Imath, a basic, light-weight, and efficient C++ representation of 2D and 3D vectors and matrices and other simple but useful mathematical objects, functions, and data types common in computer graphics applications, including the half 16-bit floating-point type.

Imath also includes optional python bindings for all types and functions, including optimized implementations of vector and matrix arrays.

Quick Start

For a simple program that uses the C++ API to read and write a .exr file, see the Hello, World examples.

Resources

Copyright © OpenEXR a Series of LF Projects, LLC.

For web site terms of use, trademark policy and other project policies please see https://lfprojects.org.