Newer
Older
use image::imageops::FilterType;
use image::{imageops, GenericImage, ImageBuffer, Pixel};
pub fn rescale<T: GenericImage>(
image: &T,
factor: f32,
) -> anyhow::Result<ImageBuffer<T::Pixel, Vec<<T::Pixel as Pixel>::Subpixel>>>
where
T::Pixel: 'static,
<T::Pixel as Pixel>::Subpixel: 'static,
{
let nwidth = (image.width() as f32 * factor) as u32;
let nheight = (image.height() as f32 * factor) as u32;
Ok(imageops::resize(
image,
nwidth,
nheight,
FilterType::Nearest,
))
}