load_image 3.3.2

Load PNG or JPEG with color profile support
Documentation
use crate::Format;
use crate::FromOptions;
use crate::Image;
use crate::ImageMeta;
use crate::Loader;
use imgref::ImgVec;
use rgb::FromSlice;
use std::fs;

impl Loader {
    pub(crate) fn load_webp(&self, data: &[u8], fs_meta: Option<fs::Metadata>) -> Result<Image, crate::Error> {
        let opts = ImageMeta::new(Format::WebP, vec![], fs_meta);
        if self.discard_alpha {
            let (w, h, pixels) = libwebp::WebPDecodeRGB(data).map_err(|_| crate::Error::WebP)?;
            let w = w as usize;
            let h = h as usize;
            self.check_dimensions(w, h)?;
            Ok(Image::from_opts(ImgVec::new(pixels.as_rgb().to_vec(), w, h), opts))
        } else {
            let (w, h, pixels) = libwebp::WebPDecodeRGBA(data).map_err(|_| crate::Error::WebP)?;
            let w = w as usize;
            let h = h as usize;
            self.check_dimensions(w, h)?;
            Ok(Image::from_opts(ImgVec::new(pixels.as_rgba().to_vec(), w, h), opts))
        }
    }
}

#[test]
fn poke_webp_test() {
    let a = crate::load_path("tests/img/test.webp").unwrap();
    assert_eq!(20, a.width);
    assert_eq!(20, a.height);
}