aboutsummaryrefslogtreecommitdiff
path: root/vendor/exr/examples/0c_read_rgba.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/exr/examples/0c_read_rgba.rs')
-rw-r--r--vendor/exr/examples/0c_read_rgba.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/vendor/exr/examples/0c_read_rgba.rs b/vendor/exr/examples/0c_read_rgba.rs
new file mode 100644
index 0000000..a2126f8
--- /dev/null
+++ b/vendor/exr/examples/0c_read_rgba.rs
@@ -0,0 +1,30 @@
+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);
+} \ No newline at end of file