Johannesvollmer Exrs Versions Save

100% Safe Rust OpenEXR file library


3 months ago

Various Improvements in encoding and decoding speed, yay!

Huge thanks to @Shnatsel for all of these:

  • Faster Zip1 & Zip16 & PXR24 decoding (encoding unchaged yet) (by using a new dependency)
  • Faster RLE encoding and decoding (by utilizing cpu vectorization where supported)
  • Faster packing and unpacking of RLE & Zip1 & Zip16 images (by utilizing cpu vectorization where supported)


8 months ago

Big thanks to our two new contributors :)

  • @anfedotoff fix multiplication overflow in preview attribute: #166
  • @Shnatsel pass bounds to zip compression: #167


9 months ago
  • Replaced inflate & deflate dependency with miniz_oxide, improving decompression performance and compression ratio (Thanks to @Shnatsel for the suggestion) for compression methods ZIP1, ZIP16, PXR24.
  • Officially started supporting big endian architectures. The functionality is almost fully implemented already. Only the PXR24 compression method is not supported yet, it will return an error when compressed or decompressed on such an architecture.
  • lebe dependency license changed to standardized BSD-3-Clause

here it is


1 year ago

Fuzzing revealed a panic in IntegerBounds, this was fixed, and the auto-cropping algorithm behaviour and performance was improved, thanks to the help of @saethlin.


2 years ago

I'm honoured to announce this new release, which largely consists of two great community contributions.

  • The B44 and B44A compression methods are now supported (the first lossy method), thanks to Dorian Fevrier
  • When using a tuple to store your channels, you can now use 32 channels instead of only 8, thanks to Karel Peeters

Other changes have also been made.

  • low-level interface restructured - was one monolithic function, has become multiple composable objects
  • parallel compression bug resolved (excessive memory usage)
  • updated dependencies
  • documentation improvements


2 years ago

This release generalizes the beloved rgba callback, so that it can be used with any combination of channels, yay! Furthermore, it is now easier to create images with multiple layers where each layer has a different type.

At last, this release also includes a dedicated GUIDE.MD, which is an introduction to the concepts in this library. This should help you to get started more easily than just examples.

  • read and write specific channels, by name, and inferred sample type
  • dedicated introductory guide
  • write multiple layers with different types
  • many other small improvements

Version 1.1.0


2 years ago

Hi! I'm proud to announce that I declare this libary version 1.0 today.

However, this is not because of full exr support yet. Instead, I came to the conclusion that the remaining missing features should not be added in a hurry. The recent architecture rework is an improvement that enables us to do all the other missing exr features smoothly. That's why this restructuring lifts this crate to version 1.0.


  • support auto crop for all image types and with more control
  • the beloved closure style for reading rgba images now supports multiple layers
  • arbitrary channels now support reading only one layer and skipping the rest
  • even simpler "one liner" rgba read and write functions
  • reduce code duplication within exrs
  • allow you to insert your own modular reader or writer, supporting custom pixel storage types, channels, or even layers
  • documentation improvements and lots of improved names


2 years ago

There's some new features in this new exrs release!

  • new attributes: software name, far and near clip, vertical and horizontal field of view
  • a basic auto crop function (but an example is missing)
  • checks meta data before creating file on system
  • some things have been renamed


2 years ago

Version exr = 0.8.0 of this crate is released!

Finally, exrs supports the PIZ compression method! This means that exrs now supports all lossless compression methods, yay. Thanks to @dgsantana for his awesome work regarding the implementation. Additionally, the PXR24 compression method now is also supported.

In summary:

  • PIZ Compression
  • PXR24 Compression
  • The prelude was restructured to simplify common imports, now offering presets for simple and rgba image handling.
  • The rgba module also got fine-tuned once more.
  • Bugfixes and dependency updates (once again, also thanks to @dgsantana)
  • More validation of files and earlier return for invalid files
  • Documentation updates


3 years ago

The RGBA image module has survived yet another rework! Most of the examples were improved, too. Thanks to @mandeep for adding compatibility to the standard std::error system.


  • updated dependencies
  • fixed documentation
  • renamed and restructured some things