fparkan/vendor/exr/examples/0c_read_rgba.rs
Valentin Popov 1b6a04ca55
Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
2024-01-08 01:21:28 +04:00

30 lines
1.4 KiB
Rust

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);
}