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:
- single-part files with arbitrary number of channels,
- no pixel data compression, and
- 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.
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)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|