Skip to content

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

License

Notifications You must be signed in to change notification settings

GAP-dev/openexr

This branch is 2 commits behind AcademySoftwareFoundation/openexr:main.

Folders and files

NameName
Last commit message
Last commit date
Apr 6, 2025
Nov 6, 2022
Mar 17, 2024
Oct 13, 2024
Apr 6, 2025
Oct 14, 2024
Apr 5, 2025
Apr 6, 2025
Mar 26, 2025
Oct 2, 2024
Mar 6, 2025
Aug 4, 2023
Mar 21, 2024
Dec 16, 2024
Dec 20, 2023
Mar 31, 2024
Mar 6, 2025
Mar 25, 2025
Feb 27, 2025
Jun 24, 2019
Feb 16, 2023
Mar 19, 2025
Dec 20, 2023
Sep 3, 2024
Sep 12, 2023
Mar 6, 2025
Nov 7, 2020
Dec 9, 2024
Jan 26, 2025
Mar 6, 2024
Feb 27, 2025
Mar 4, 2021

Repository files navigation

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.

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>

int
main()
{
    try {
        int width =  10;
        int height = 10;
        
        Imf::Array2D<Imf::Rgba> pixels(width, height);
        for (int y=0; y<height; y++)
            for (int x=0; x<width; x++)
                pixels[y][x] = Imf::Rgba(0, x / (width-1.0f), y / (height-1.0f));
    
        Imf::RgbaOutputFile file ("hello.exr", width, height, Imf::WRITE_RGBA);
        file.setFrameBuffer (&pixels[0][0], 1, width);
        file.writePixels (height);
    } catch (const std::exception &e) {
        std::cerr << "Unable to read image file hello.exr:" << e.what() << std::endl;
        return 1;
    }
    return 0;
}

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

Resources

License

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


aswf

About

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

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 65.1%
  • C++ 32.2%
  • Python 1.3%
  • CMake 0.7%
  • M4 0.2%
  • Starlark 0.2%
  • Other 0.3%