diff --git a/src/jxl.rs b/src/jxl.rs new file mode 100644 index 0000000..26de36f --- /dev/null +++ b/src/jxl.rs @@ -0,0 +1,22 @@ +pub struct JxlDecoder<'a> { + metadata: jpegxl_rs::decode::Metadata, + inner: jpegxl_rs::decode::JxlDecoder<'a, 'a>, +} + +impl<'a> image::ImageDecoder for JxlDecoder<'a> { + fn color_type(&self) -> image::ColorType { + image::ColorType::Rgba8 + } + fn icc_profile(&mut self) -> image::ImageResult>> { + Ok(self.metadata.icc_profile.clone()) + } + fn dimensions(&self) -> (u32, u32) {} + fn read_image(self, buf: &mut [u8]) -> image::ImageResult<()> + where + Self: Sized, + { + } + fn read_image_boxed(self: Box, buf: &mut [u8]) -> image::ImageResult<()> { + self.read_image(buf) + } +} diff --git a/src/main.rs b/src/main.rs index 3d8618d..ed2e77e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,6 +7,7 @@ use iced::{ }; use image::{EncodableLayout, RgbaImage, imageops}; +mod jxl; mod utils; #[derive(Clone, Debug)]