Skip to main content

example workflow

minexr

minexr is a standalone, fast Python OpenEXR reader for single-part, uncompressed scan-line files. It is compatible with .exr files produced by Blender.

Assumptions

minexr makes a couple of assumptions about the .exr file to be read:

  1. single-part files with arbitrary number of channels,
  2. no pixel data compression, and
  3. equal channel types (HALF, FLOAT, UINT).

These assumptions allow us to efficiently parse and read the .exr file. In particular we gain constant offsets between scan lines which allows us to read the entire image in (H,C,W) format without copying.

Usage

The following is taken from example.py

import minexr

with open('file.exr', 'rb') as fp:
        reader = minexr.load(fp)
        rgba = reader.select(['Color.R','Color.G','Color.B','Color.A'])
        # a HxWx4 np.array with dtype based on exr type.
        ...

Full example.py loads the following images

which were previously rendered using Blender/EEVEE cube.blend.

Runtime

The following timings are produced by bench.py by repeatable reading an RGBA image from an .exr file. Timings include file and numpy operations.

Module [sec/image] Note
OpenEXR 1.3.2 0.020 with channel concatenate
OpenEXR 1.3.2 0.015 without channel concatenate
minexr 0.004 with channel concatenate

Install

Either via pip

pip install minexr

Or clone this repository and invoke

pip install -e .

Tests

To run the tests

pytest

Blender support

Use a FileOutput node in Blender's compositor to export .exr files. Make sure to select OpenEXR MultiLayer format and set CODEC to None as shown in the following image. Color Depth can be chosen as required.

When unsure about which channels are being written, you can inspect the file content as follows
import minexr

with open('file.exr', 'rb') as fp:
        reader = minexr.load(fp)
        print(reader.channel_names)
        # ['Color.R','Color.G','Color.B', ...]
        print(reader.attrs)
        # Dictionary of all OpenEXR header attributes.

Metadata

Release files for minexr 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for minexr 1.0.2
File Interpreter ABI Platform
minexr-1.0.2-py3-none-any.whl Python 3 none any Details

Release files / minexr-1.0.2-py3-none-any.whl

Download URL minexr-1.0.2-py3-none-any.whl
Size 6.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cb9b46e9a31ad861316c6af5e7023bfe8376b083aeebd81bc4729e66f2b08ad9
BLAKE2b-256 checksum
How to use checksums
8c6a1c693a98f3caee8a4de0f308f58fd85b08ac6d00dca518456e898d434169
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.7

Release history Release notifications | RSS feed

This release

1.0.2 This release

1 release file

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page