image_visualizer/
lib.rs

1use image::*;
2use visualizer::visualizations;
3
4/// Exports the visualizer crate.
5pub use visualizer;
6
7/// Implements the `visualizer` function for dynamic images.
8pub trait VisualizableImage {
9    /// Visualizes the given dynamic image as png image.
10    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}