3 Commits

Author SHA1 Message Date
e26a3b6782 fixed bugs in bench command, cleaned up encode to generate proper file extensions
Some checks failed
Rust / build (push) Failing after 20s
2024-11-22 01:15:51 +01:00
valhrafnaz
85eeb9bfc7 Update release.yml 2024-11-21 18:49:58 +01:00
3b3fec80ed change to testing workflow to not require files for CI
Some checks failed
Rust / build (push) Failing after 27s
2024-11-21 18:39:22 +01:00
3 changed files with 35 additions and 15 deletions

View File

@@ -16,8 +16,6 @@ jobs:
archive: zip
- target: x86_64-unknown-linux-musl
archive: tar.gz tar.xz tar.zst
- target: x86_64-apple-darwin
archive: zip
steps:
- uses: actions/checkout@master
- name: Compile and release

View File

@@ -64,8 +64,10 @@ pub mod qoi_lib {
/// ```
/// # use std::error::Error;
/// # use crate::qoi::qoi_lib::*;
/// # use log::*;
/// # fn main() -> Result<(), Box<ImgError>> {
/// init().expect("Failed to initialize logger");
/// let level = LevelFilter::Debug;
/// init(level).expect("Failed to initialize logger");
/// #
/// # Ok(())
/// #
@@ -77,8 +79,10 @@ pub mod qoi_lib {
/// ```
/// # use std::error::Error;
/// # use crate::qoi::qoi_lib::*;
/// # use log::*;
/// # fn main() -> Result<(), ImgError> {
/// match init() {
/// let level = LevelFilter::Debug;
/// match init(level) {
/// Ok(()) => (),
/// Err(e) => println!("Logger failed to initialize!")
/// }
@@ -615,12 +619,15 @@ pub mod qoi_lib {
}
/// Writes Image as byte vector to file with name given as string slice.
/// ```rust
/// use qoi::qoi_lib::*
/// # use qoi::qoi_lib::*;
/// # fn main() {
///
/// let img = Image::new();
/// let bytes: Vec<u8> = img.to_bytes();
/// let bytes: Vec<u8> = vec![];
/// let name = "qoi-image";
/// write_to_file(bytes, name);
/// #
/// #
/// # }
/// ```
pub fn write_to_file(bytes: Vec<u8>, filename: &str) -> std::io::Result<()> {
let mut file_path: String = String::from(filename);
@@ -869,7 +876,7 @@ pub mod qoi_lib {
assert_eq!(pix3.diff(&pix4), (-5, -5, -5));
}
#[test]
/* #[test]
fn qoi_to_qoi_test() -> io::Result<()> {
//Open path to test images
let path: &Path = Path::new("./qoi_test_images/");
@@ -997,7 +1004,7 @@ pub mod qoi_lib {
Ok(())
}
*/
#[test]
fn tag_test() {
//init().expect("Logger initialisation failed!");

View File

@@ -2,6 +2,7 @@
use clap::{Args,Parser, Subcommand};
use std::fs::File;
use std::io::{BufReader, Read};
use std::process;
use std::time::SystemTime;
use colors_transform::{Color, Hsl, Rgb};
@@ -100,7 +101,11 @@ fn demo() {
fn encode(in_path: &str, out_path: &str) {
//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() {
Ok(reader) => reader,
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),
};
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!");
}
@@ -183,9 +194,9 @@ fn bench(input: &str, output: Option<String>) {
}
match decode(&out_path) {
Ok(img) => {
let out_buf = img.to_bytes();
let _ = write_to_file(out_buf, out_path.strip_suffix(".qoi").unwrap()).expect("whoops!");
//Never fails as long as memory does not corrupt thanks to above push_str op.
let png_path = out_path.strip_suffix(".qoi").unwrap();
img.write_png(&png_path);
},
Err(e) => panic!("Error: {e:?}")
}
@@ -289,8 +300,12 @@ fn main() {
Commands::Encode(args) => {
let out_path = match &args.output {
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);
},
Commands::Demo { } => demo()