imageinfo 0.7.27

Rust library to get image size and format without loading/decoding.
Documentation
use serde::Serialize;

#[derive(Debug, PartialEq, Serialize)]
pub struct ImageSize {
    pub width: i64,
    pub height: i64,
}

impl std::fmt::Display for ImageSize {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
        f.write_fmt(format_args!(
            "{{width: {}, height: {}}}",
            self.width, self.height
        ))
    }
}

#[derive(Debug)]
pub enum ImageInfoError {
    UnrecognizedFormat,
    IoError(std::io::Error),
}

impl std::error::Error for ImageInfoError {}

impl std::fmt::Display for ImageInfoError {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
        match self {
            Self::UnrecognizedFormat => f.write_str("unrecognized image format"),
            Self::IoError(err) => err.fmt(f),
        }
    }
}

impl From<std::io::Error> for ImageInfoError {
    fn from(err: std::io::Error) -> ImageInfoError {
        ImageInfoError::IoError(err)
    }
}

impl Serialize for ImageInfoError {
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: serde::Serializer,
    {
        serializer.serialize_str(self.to_string().as_ref())
    }
}

pub type ImageInfoResult<T> = Result<T, ImageInfoError>;