use chromatic::HsvAlpha;
use ndarray::Array2;
use photo::Image;
use std::{fs::create_dir_all, path::Path};
use vista::{DisplayExt, DoubleJoined};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let input_path = Path::new("input/colour_alpha-f32.png");
println!("Loading image from {:?}", input_path);
let mut img: Array2<HsvAlpha<f32>> = Array2::load(input_path)?;
let (height, width) = img.dim();
println!("Image dimensions: {}x{}", width, height);
println!("{}", img.display::<DoubleJoined>());
img.mapv_inplace(|pixel| {
HsvAlpha::new(
pixel.hue() + 60.0, pixel.saturation(),
pixel.value(),
pixel.alpha(),
)
});
println!("Modified image:");
println!("{}", img.display::<DoubleJoined>());
create_dir_all("output")?;
let output_path = Path::new("output/image.png");
img.save(output_path)?;
println!("Saved modified image to {:?}", output_path);
Ok(())
}