1use std::{ffi::OsStr, path::Path};
2
3use image::{self, ImageFormat, RgbImage};
4
5use super::ImageError;
6
7pub fn save_image(rgb_image: &RgbImage, path: &Path) -> Result<(), ImageError> {
9 if matches!(path.extension().and_then(OsStr::to_str), Some("png")) {
10 rgb_image.save_with_format(path, ImageFormat::Png)?;
11 Ok(())
12 } else {
13 Err(ImageError::InvalidExtension)
14 }
15}
16
17#[cfg(test)]
18mod tests {
19 use image::{self, RgbImage};
20 use tempfile::Builder;
21
22 use super::*;
23
24 #[test]
25 fn verify_save_image() {
26 let tmpfile = Builder::new().suffix(".png").tempfile().unwrap();
27 let rgb_image = RgbImage::new(5, 5);
28
29 let result = save_image(&rgb_image, tmpfile.path());
30 assert!(result.is_ok());
31 }
32}