From 724fbadf9e917a85c298acb4bbcd227beac356fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20du=20Garreau?= Date: Thu, 6 May 2021 17:49:25 +0200 Subject: [PATCH 1/2] Guess image format from file extension --- common/src/assets.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/common/src/assets.rs b/common/src/assets.rs index 737810da46..8d7fed412e 100644 --- a/common/src/assets.rs +++ b/common/src/assets.rs @@ -98,8 +98,13 @@ impl Image { pub struct ImageLoader; impl Loader for ImageLoader { - fn load(content: Cow<[u8]>, _: &str) -> Result { - let image = image::load_from_memory(&content)?; + fn load(content: Cow<[u8]>, ext: &str) -> Result { + let format = match ext { + "png" => image::ImageFormat::Png, + "jpg" => image::ImageFormat::Jpeg, + _ => return Err("unknown image format".into()), + }; + let image = image::load_from_memory_with_format(&content, format)?; Ok(Image(Arc::new(image))) } } From 9cfe2911e552c4af451fcb9d490e38f743a2f52c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20du=20Garreau?= Date: Sun, 9 May 2021 19:02:48 +0200 Subject: [PATCH 2/2] Only load images as PNG --- common/src/assets.rs | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/common/src/assets.rs b/common/src/assets.rs index 8d7fed412e..29a45f162f 100644 --- a/common/src/assets.rs +++ b/common/src/assets.rs @@ -96,23 +96,19 @@ impl Image { pub fn to_image(&self) -> Arc { Arc::clone(&self.0) } } -pub struct ImageLoader; -impl Loader for ImageLoader { - fn load(content: Cow<[u8]>, ext: &str) -> Result { - let format = match ext { - "png" => image::ImageFormat::Png, - "jpg" => image::ImageFormat::Jpeg, - _ => return Err("unknown image format".into()), - }; +pub struct PngLoader; +impl Loader for PngLoader { + fn load(content: Cow<[u8]>, _: &str) -> Result { + let format = image::ImageFormat::Png; let image = image::load_from_memory_with_format(&content, format)?; Ok(Image(Arc::new(image))) } } impl Asset for Image { - type Loader = ImageLoader; + type Loader = PngLoader; - const EXTENSIONS: &'static [&'static str] = &["png", "jpg"]; + const EXTENSION: &'static str = "png"; } pub struct DotVoxAsset(pub DotVoxData);