Newer
Older
use clap::ArgEnum;
use image::imageops::FilterType;
use image::{imageops, GenericImage, ImageBuffer, Pixel};
use serde::{Deserialize, Serialize};
#[derive(Copy, Clone, Serialize, Deserialize, ArgEnum, Debug)]
pub enum RotateDegree {
#[serde(rename = "90")]
One,
#[serde(rename = "180")]
Two,
#[serde(rename = "270")]
Three,
}
pub fn rotate<T: GenericImage>(
image: &T,
degree: RotateDegree,
) -> anyhow::Result<ImageBuffer<T::Pixel, Vec<<T::Pixel as Pixel>::Subpixel>>>
where
T::Pixel: 'static,
<T::Pixel as Pixel>::Subpixel: 'static,
{
use RotateDegree::*;
match degree {
One => Ok(imageops::rotate90(image)),
Two => Ok(imageops::rotate180(image)),
Three => Ok(imageops::rotate270(image)),
}
}