use std::env;
use std::fs::File;
use std::io::BufWriter;
use image::ColorType;
extern crate imagepipe;
extern crate rawloader;
extern crate image;
fn usage() {
println!("converter <file> [outfile]");
std::process::exit(1);
}
fn error(err: &str) -> ! {
println!("ERROR: {}", err);
std::process::exit(2);
}
fn main() {
let args: Vec<_> = env::args().collect();
if args.len() < 2 {
usage();
}
let file = &args[1];
let filejpg = format!("{}.jpg",file);
let outfile = if args.len() > 2 {
&args[2]
} else {
&filejpg
};
println!("Loading file \"{}\" and saving it as \"{}\"", file, outfile);
let decoded = match imagepipe::simple_decode_8bit(file, 0, 0) {
Ok(img) => img,
Err(e) => error(&e),
};
let uf = match File::create(outfile) {
Ok(val) => val,
Err(e) => {
error(format!("Error: {}", e).as_ref())
}
};
let mut f = BufWriter::new(uf);
let mut jpg_encoder = image::codecs::jpeg::JpegEncoder::new_with_quality(&mut f, 90);
jpg_encoder
.encode(&decoded.data, decoded.width as u32, decoded.height as u32, ColorType::Rgb8)
.expect("Encoding image in JPEG format failed.");
}