brdiff 0.2.0

A command-line tool for subtracting images to generate a new blue-red difference image.
Documentation
use brdiff::Image;
use std::process::exit;

fn show_usage(program: String) {
    eprintln!(
        "usage:
  {} [--help] [--invert] <base_image> <subtraction_image> <difference_image>\n",
        program
    );
}

fn main() {
    let mut invert = false;
    let mut args: Vec<String> = std::env::args().collect();
    let program = args[0].clone();
    args.remove(0);

    if args.len() > 0 && args[0] == "--invert" {
        args.remove(0);
        invert = true;
    }

    if args.len() != 3 {
        show_usage(program);
        exit(1);
    }

    let base_image = match Image::from_path(args[0].clone()) {
        Ok(image) => image,
        Err(e) => panic!("Error opening {}:\n{}", args[0], e),
    };
    let subtraction_image = match Image::from_path(args[1].clone()) {
        Ok(image) => image,
        Err(e) => panic!("Error opening {}:\n{}", args[1], e),
    };

    let mut output_image = match base_image.subtract(&subtraction_image, invert) {
        Ok(output_image) => output_image,
        Err(e) => panic!("Error subtracting images:\n{}", e),
    };

    output_image.set_path(args[2].clone());
    match output_image.save() {
        Ok(_) => (),
        Err(e) => eprintln!("Error writing {}:\n{}", args[2], e),
    }
}