MCPcopy Index your code
hub / github.com/AcademySoftwareFoundation/openexr

github.com/AcademySoftwareFoundation/openexr @v3.4.13

Chat with this repo
repository ↗ · DeepWiki ↗ · release v3.4.13 ↗ · + Follow
5,446 symbols 19,062 edges 813 files 909 documented · 17% 4 cross-repo links updated 1d agov3.3.12 · 2026-06-22★ 1,81278 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

License CII Best Practices OpenSSF Scorecard Build Status Analysis Status Quality Gate Status

OpenEXR

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 and associated metadata, with strong support for multi-part, multi-channel use cases.

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 Project Mission

The goal of the OpenEXR project is to keep the EXR format reliable and modern and to maintain its place as the preferred image format for entertainment content creation.

Major revisions are infrequent, and new features will be carefully weighed against increased complexity. The principal priorities of the project are:

  • Robustness, reliability, security
  • Backwards compatibility, data longevity
  • Performance - read/write/compression/decompression time
  • Simplicity, ease of use, maintainability
  • Wide adoption, multi-platform support - Linux, Windows, macOS, and others

OpenEXR is intended solely for 2D data. It is not appropriate for storage of volumetric data, cached or lit 3D scenes, or more complex 3D data such as light fields.

The goals of the Imath project are simplicity, ease of use, correctness and verifiability, and breadth of adoption. Imath is not intended to be a comprehensive linear algebra or numerical analysis package.

Project Governance

OpenEXR is a project of the Academy Software Foundation. See the project's governance policies, contribution guidelines, and code of conduct for more information.

Building OpenEXR

See the Install instructions for instructions on how to build OpenEXR and its required prerequisites.

Quick Start

See the technical documentation for complete details, but to get started, the "Hello, world" exrwriter.cpp writer program is:

#include <ImfRgbaFile.h>
#include <ImfArray.h>
#include <iostream>

using namespace OPENEXR_IMF_NAMESPACE;

int
main()
{
    int width =  100;
    int height = 50;

    Array2D<Rgba> pixels(height, width);
    for (int y=0; y<height; y++)
    {
        float c = (y / 5 % 2 == 0) ? (y / (float) height) : 0.0;
        for (int x=0; x<width; x++)
            pixels[y][x] = Rgba(c, c, c);
    }

    try {
        RgbaOutputFile file ("stripes.exr", width, height, WRITE_RGBA);
        file.setFrameBuffer (&pixels[0][0], 1, width);
        file.writePixels (height);
    } catch (const std::exception &e) {
        std::cerr << "error writing image file stripes.exr:" << e.what() << std::endl;
        return 1;
    }
    return 0;
}

This creates an image 100 pixels wide and 50 pixels high with horizontal stripes 5 pixels high of graduated intensity, bright on the bottom of the image and dark towards the top. Note that pixel[0][0] is in the upper left:

stripes

The CMakeLists.txt to build:

cmake_minimum_required(VERSION 3.12)
project(exrwriter)
find_package(OpenEXR REQUIRED)

add_executable(${PROJECT_NAME} exrwriter.cpp)
target_link_libraries(${PROJECT_NAME} OpenEXR::OpenEXR)

To build:

$ cmake -S . -B _build -DCMAKE_PREFIX_PATH=<path to OpenEXR libraries/includes>
$ cmake --build _build

For more details, see The OpenEXR API.

Community

  • Ask a question:

  • Email: openexr-dev@lists.aswf.io

  • Slack: academysoftwarefdn#openexr

  • Attend a meeting:

  • Technical Steering Committee meetings are open to the public, fortnightly on Thursdays, 1:30pm Pacific Time.

  • Calendar: https://zoom-lfx.platform.linuxfoundation.org/meetings/openexr

  • Meeting Notes: https://wiki.aswf.io/display/OEXR/TSC+Meetings

  • Report a bug:

  • Submit an Issue: https://github.com/AcademySoftwareFoundation/openexr/issues

  • Report a security vulnerability:

  • File a GitHub security advisory. Email security@openexr.com for private/secure discussion with the project maintainers.

  • Contribute a Fix, Feature, or Improvement:

  • Read the Contribution Guidelines and Code of Conduct

  • Sign the Contributor License Agreement

  • Submit a Pull Request: https://github.com/AcademySoftwareFoundation/openexr/pulls

  • If you'd like to contribute and could use some ideas of what to do, browse "good first issues" here or on Clotributor.

Resources

License

OpenEXR is licensed under the BSD-3-Clause license.


aswf

Core symbols most depended-on inside this repo

insert
called by 821
src/lib/OpenEXR/ImfHeader.cpp
header
called by 514
src/lib/OpenEXR/ImfContext.cpp
size
called by 453
src/lib/OpenEXR/ImfIO.cpp
dataWindow
called by 436
src/lib/OpenEXR/ImfContext.cpp
channels
called by 425
src/lib/OpenEXR/ImfContext.cpp
value
called by 374
src/lib/IlmThread/IlmThreadSemaphore.cpp
setFrameBuffer
called by 362
src/lib/OpenEXR/ImfRgbaFile.cpp
channel
called by 270
src/lib/OpenEXRUtil/ImfImageChannel.cpp

Shape

Function 2,892
Method 1,772
Class 730
Enum 52

Languages

C++84%
C12%
Python4%

Modules by API surface

src/lib/Iex/IexForward.h169 symbols
external/OpenJPH/src/core/codestream/ojph_params_local.h118 symbols
src/lib/OpenEXRCore/part_attr.c94 symbols
external/deflate/lib/deflate_compress.c92 symbols
src/lib/OpenEXR/ImfCRgbaFile.cpp91 symbols
external/OpenJPH/src/core/codestream/ojph_params.cpp85 symbols
src/wrappers/python/PyOpenEXR.cpp53 symbols
src/lib/OpenEXR/ImfTiledOutputFile.cpp52 symbols
src/lib/OpenEXR/ImfDeepTiledOutputFile.cpp52 symbols
src/wrappers/python/Imath.py50 symbols
src/lib/OpenEXRCore/parse_header.c47 symbols
src/lib/OpenEXR/ImfHeader.cpp47 symbols

For agents

$ claude mcp add openexr \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact