extern crate exr; /// `exr` offers a few simplified functions for the most basic use cases. /// `read_first_rgba_layer_from_file` is a such a function, which loads rgba exr files. /// To load the pixel data, you need to specify /// how to create and how to set the pixels of your image. fn main() { let image = exr::prelude::read_first_rgba_layer_from_file( "generated_rgba.exr", // instantiate your image type with the size of the image in file |resolution, _| { let default_pixel = [0.0, 0.0, 0.0, 0.0]; let empty_line = vec![ default_pixel; resolution.width() ]; let empty_image = vec![ empty_line; resolution.height() ]; empty_image }, // transfer the colors from the file to your image type, // requesting all values to be converted to f32 numbers (you can also directly use f16 instead) // and you could also use `Sample` instead of `f32` to keep the original data type from the file |pixel_vector, position, (r,g,b, a): (f32, f32, f32, f32)| { pixel_vector[position.y()][position.x()] = [r, g, b, a] }, ).expect("run the `1_write_rgba` example to generate the required file"); // printing all pixels might kill the console, so only print some meta data about the image println!("opened file generated_rgba.exr: {:#?}", image.layer_data.attributes); }