use std::path::Path;
use image::{DynamicImage, ImageResult};
pub fn open_image<P>(path: P, rect: geo::Rect) -> ImageResult<GeoImage>
where
P: AsRef<Path>,
{
image::open(path).map(|img| GeoImage {
dynamic_image: img,
rect,
})
}
pub fn load_image_from_memory(buffer: &[u8], rect: geo::Rect) -> ImageResult<GeoImage>
{
image::load_from_memory(buffer).map(|img| GeoImage {
dynamic_image: img,
rect,
})
}
pub struct GeoImage
{
dynamic_image: DynamicImage,
rect: geo::Rect,
}
impl super::ImageData for GeoImage
{
fn bounding_box(&self) -> geo::Rect
{
self.rect
}
fn pixel_size(&self) -> (u32, u32)
{
(self.dynamic_image.width(), self.dynamic_image.height())
}
fn rgba_data(&self) -> Vec<u8>
{
self.dynamic_image.to_rgba8().into_raw().to_vec()
}
}