Files
FlutR/src/main.rs

55 lines
1.1 KiB
Rust

use address::Host;
use std::path::PathBuf;
use image::ImageReader;
use clap::Parser;
mod flutr;
mod pixelmsgs;
use flutr::FlutR;
use pixelmsgs::Add;
use pixelmsgs::PixelMsgs;
#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
struct Args {
image_path: PathBuf,
host: Host,
#[arg(short, long, default_value_t = 1234)]
port: u16,
}
fn main() {
let args = Args::parse();
let pixel_msgs = parse_image_to_msgs(&args.image_path);
let mut flutr = FlutR::new(args.host, args.port, pixel_msgs).unwrap();
flutr.flut();
}
fn parse_image_to_msgs(path: &PathBuf) -> PixelMsgs {
let mut result = PixelMsgs::default();
let image_result = parse_image(path);
let image = match image_result {
Ok(img) => img,
Err(err) => panic!("Error reading image! {err}"),
};
let rgb_image = image.into_rgb8();
for pixel in rgb_image.enumerate_pixels() {
result.add(pixel);
}
result
}
fn parse_image(path: &PathBuf) -> Result<image::DynamicImage, image::error::ImageError> {
ImageReader::open(path)?.with_guessed_format()?.decode()
}