fixed bugs in bench command, cleaned up encode to generate proper file extensions
Some checks failed
Rust / build (push) Failing after 20s
Some checks failed
Rust / build (push) Failing after 20s
This commit is contained in:
parent
85eeb9bfc7
commit
e26a3b6782
27
src/main.rs
27
src/main.rs
@ -2,6 +2,7 @@
|
|||||||
use clap::{Args,Parser, Subcommand};
|
use clap::{Args,Parser, Subcommand};
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::{BufReader, Read};
|
use std::io::{BufReader, Read};
|
||||||
|
use std::process;
|
||||||
use std::time::SystemTime;
|
use std::time::SystemTime;
|
||||||
|
|
||||||
use colors_transform::{Color, Hsl, Rgb};
|
use colors_transform::{Color, Hsl, Rgb};
|
||||||
@ -100,7 +101,11 @@ fn demo() {
|
|||||||
fn encode(in_path: &str, out_path: &str) {
|
fn encode(in_path: &str, out_path: &str) {
|
||||||
|
|
||||||
//Init png decoder, attempt to decode png into bitmap, throw error if unsuccessful
|
//Init png decoder, attempt to decode png into bitmap, throw error if unsuccessful
|
||||||
let decoder = png::Decoder::new(File::open(in_path).unwrap());
|
let file:File = File::open(in_path).unwrap_or_else(|e| {
|
||||||
|
println!("Error: {:?}", e.to_string());
|
||||||
|
process::exit(1);
|
||||||
|
});
|
||||||
|
let decoder = png::Decoder::new(file);
|
||||||
let mut reader = match decoder.read_info() {
|
let mut reader = match decoder.read_info() {
|
||||||
Ok(reader) => reader,
|
Ok(reader) => reader,
|
||||||
Err(e) => panic!("ERROR: couldn't read file: {e:}"),
|
Err(e) => panic!("ERROR: couldn't read file: {e:}"),
|
||||||
@ -129,7 +134,13 @@ fn encode(in_path: &str, out_path: &str) {
|
|||||||
Err(err) => panic!("Problem generating image: {:?}", err),
|
Err(err) => panic!("Problem generating image: {:?}", err),
|
||||||
};
|
};
|
||||||
|
|
||||||
write_to_file(encode_from_image(img), out_path).expect("ERROR: Can't write file.");
|
//in case out_path is erroneously passed with suffix
|
||||||
|
let filename = match out_path.strip_suffix(".png") {
|
||||||
|
Some(s) => s,
|
||||||
|
None => out_path
|
||||||
|
};
|
||||||
|
|
||||||
|
write_to_file(encode_from_image(img), filename).expect("ERROR: Can't write file.");
|
||||||
info!("Encoding successful!");
|
info!("Encoding successful!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,9 +194,9 @@ fn bench(input: &str, output: Option<String>) {
|
|||||||
}
|
}
|
||||||
match decode(&out_path) {
|
match decode(&out_path) {
|
||||||
Ok(img) => {
|
Ok(img) => {
|
||||||
|
//Never fails as long as memory does not corrupt thanks to above push_str op.
|
||||||
let out_buf = img.to_bytes();
|
let png_path = out_path.strip_suffix(".qoi").unwrap();
|
||||||
let _ = write_to_file(out_buf, out_path.strip_suffix(".qoi").unwrap()).expect("whoops!");
|
img.write_png(&png_path);
|
||||||
},
|
},
|
||||||
Err(e) => panic!("Error: {e:?}")
|
Err(e) => panic!("Error: {e:?}")
|
||||||
}
|
}
|
||||||
@ -289,8 +300,12 @@ fn main() {
|
|||||||
Commands::Encode(args) => {
|
Commands::Encode(args) => {
|
||||||
let out_path = match &args.output {
|
let out_path = match &args.output {
|
||||||
Some(s) => s,
|
Some(s) => s,
|
||||||
None => &args.input
|
None => args.input.strip_suffix(".png").unwrap_or_else(||{
|
||||||
|
println!("Error: Could not construct output arg from input arg. Please provide explicitly");
|
||||||
|
process::exit(1);
|
||||||
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
encode(&args.input, &out_path);
|
encode(&args.input, &out_path);
|
||||||
},
|
},
|
||||||
Commands::Demo { } => demo()
|
Commands::Demo { } => demo()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user