45 lines
1.2 KiB
Rust
45 lines
1.2 KiB
Rust
extern crate image;
|
|
extern crate psnr;
|
|
|
|
use std::env::args;
|
|
use std::fs;
|
|
|
|
use image::ImageResult;
|
|
use psnr::psnr_files;
|
|
|
|
fn psnr_dir(path1: &str, path2: &str) -> Vec<(String, ImageResult<f64>)> {
|
|
let mut dirs1: Vec<_> = fs::read_dir(path1).unwrap()
|
|
.map(|x|x.unwrap())
|
|
.filter(|x| x.file_name().into_string().unwrap().ends_with(".png"))
|
|
.collect();
|
|
|
|
let mut dirs2: Vec<_> = fs::read_dir(path2).unwrap()
|
|
.map(|x|x.unwrap())
|
|
.filter(|x| x.file_name().into_string().unwrap().ends_with(".png"))
|
|
.collect();
|
|
|
|
dirs1.sort_by_key(|x| x.file_name());
|
|
dirs2.sort_by_key(|x| x.file_name());
|
|
|
|
let mut res = vec!();
|
|
|
|
for file in dirs1 {
|
|
let p1 = path1.to_owned() + &file.file_name().to_owned().into_string().unwrap();
|
|
let p2 = path2.to_owned() + &file.file_name().to_owned().into_string().unwrap();
|
|
let psnr = psnr_files(&p1, &p2);
|
|
|
|
let elt = (file.file_name().to_owned().into_string().unwrap(), psnr.unwrap());
|
|
println!("{} {}", elt.0, elt.1);
|
|
res.push((elt.0, Ok(elt.1)));
|
|
}
|
|
|
|
res
|
|
}
|
|
|
|
fn main() {
|
|
let path1 = args().nth(1).unwrap();
|
|
let path2 = args().nth(2).unwrap();
|
|
|
|
let _ = psnr_dir(&path1, &path2);
|
|
}
|