diff --git a/src/image_loader/mod.rs b/src/image_loader/mod.rs index ef347a4..4250a60 100644 --- a/src/image_loader/mod.rs +++ b/src/image_loader/mod.rs @@ -1,15 +1,53 @@ use std::path::Path; - use crate::image::Image; +use std::fs::File; -pub fn image_loader(path: &Path) -> Image { + +/* !!!Fragen!!! + - was ist .unwrap() + - was ist ein IDAT chunk (bei read.info() in der doku) + - was ist .output_buffer_size() + - was ist .next_frame + - kann ich srgb nutzen für dir rgba values bzw für den rgb teil + - woher ziehe ich den alpha channel + - ist makierter teil kommplet nötig + */ + +pub fn image_loader(path: &Path) -> Image +{ +//marker1 + + // The decoder is a build for reader and can be used to set various decoding options + // via `Transformations`. The default output transformation is `Transformations::IDENTITY`. + + //open a path in the decoder to look into the img + let decoder = png::Decoder::new(File::open(path).unwrap()); + + let mut reader = decoder.read_info().unwrap(); + // Allocate the output buffer. + let mut buf = vec![0; reader.output_buffer_size()]; + // Read the next frame. An APNG might contain multiple frames. + let info = reader.next_frame(&mut buf).unwrap(); + + let bit_depth = reader.info().bit_depth; + let color_type = reader.info().color_type; + let width = reader.info().width; + let height = reader.info().height; + + // Grab the bytes of the image. + let bytes = &buf[..info.buffer_size()]; + // Inspect more details of the last read frame. + let in_animation = reader.info().frame_control.is_some(); + +//marker1 + let vec: Vec<(f32, f32, f32, f32)> = vec! + [ + (-33.0, 7732.0, 2564355.0, -79.0), + (1.0, 79.0, 255.0, 1.05), + (300.0, 300.0, 300.0, 300.0), + ]; + let image: Image = Image::new(1, 3, vec, path.to_path_buf()); - let vec: Vec<(f32, f32, f32, f32)> = vec![ - (-33.0, 7732.0, 2564355.0, -79.0), - (1.0, 79.0, 255.0, 1.05), - (300.0, 300.0, 300.0, 300.0), - ]; - let image: Image = Image::new(1, 3, vec); image }