1use image::*;
2use visualizer::visualizations;
3
4pub use visualizer;
6
7pub trait VisualizableImage {
9 fn visualize(&self) -> visualizations::PngImage<'static>;
11}
12
13impl VisualizableImage for DynamicImage {
14 fn visualize(&self) -> visualizations::PngImage<'static> {
15 let mut bytes: Vec<u8> = Vec::new();
16 self.write_to(&mut bytes, image::ImageOutputFormat::Png)
17 .unwrap();
18 visualizations::PngImage::new(&bytes)
19 }
20}
21
22impl VisualizableImage for GrayImage {
23 fn visualize(&self) -> visualizations::PngImage<'static> {
24 let i = DynamicImage::ImageLuma8(self.clone());
25 i.visualize()
26 }
27}
28
29impl VisualizableImage for GrayAlphaImage {
30 fn visualize(&self) -> visualizations::PngImage<'static> {
31 let i = DynamicImage::ImageLumaA8(self.clone());
32 i.visualize()
33 }
34}
35
36impl VisualizableImage for RgbImage {
37 fn visualize(&self) -> visualizations::PngImage<'static> {
38 let i = DynamicImage::ImageRgb8(self.clone());
39 i.visualize()
40 }
41}
42
43impl VisualizableImage for RgbaImage {
44 fn visualize(&self) -> visualizations::PngImage<'static> {
45 let i = DynamicImage::ImageRgba8(self.clone());
46 i.visualize()
47 }
48}