#[derive(Debug)]
pub enum ImageFrumUrlError {
Reqwest(reqwest::Error),
Image(image::ImageError),
}
impl From<reqwest::Error> for ImageFrumUrlError {
fn from(e: reqwest::Error) -> Self {
ImageFrumUrlError::Reqwest(e)
}
}
impl From<image::ImageError> for ImageFrumUrlError {
fn from(e: image::ImageError) -> Self {
ImageFrumUrlError::Image(e)
}
}
pub fn load_image_from_url<T: reqwest::IntoUrl>(
url: T,
) -> Result<image::DynamicImage, ImageFrumUrlError> {
let bytes = reqwest::blocking::get(url)?.bytes()?;
let cursor = std::io::Cursor::new(bytes);
let img =
image::io::Reader::with_format(std::io::BufReader::new(cursor), image::ImageFormat::Png)
.decode()?;
Ok(img)
}