本帖最后由 bailong360 于 2019-3-28 20:00 编辑
来个 Rust 的- use image::GenericImageView;
- use std::path::{Path, PathBuf};
-
- // 提取 RGB 的平均方差
- fn rgb_variance<P: AsRef<Path>>(path: P) -> f64 {
- let img = image::open(path).expect("无法打开");
- stats::mean(img.pixels().map(|(_, _, rgba)| {
- stats::variance(rgba.data.iter().take(3).cloned())
- }))
- }
-
- // 文件名后加入 "C"
- fn rename(path: PathBuf) {
- let mut new_path = path.clone();
- let base_name = path.file_name().unwrap().to_str().unwrap();
- new_path.set_file_name(base_name.replace(".", "C."));
- println!(" rename {}", path.display());
- std::fs::rename(path, new_path).expect("重命名失败");
- }
-
- fn main() {
- // 从环境变量中读取阈值, 默认 1.0
- let threshold = std::env::var("THRESHOLD")
- .map(|v| v.parse::<f64>().unwrap())
- .unwrap_or(1.0);
-
- for entry in glob::glob("*.jpg").unwrap() {
- let path = entry.unwrap();
- let rgb_variance = rgb_variance(&path);
- println!("{:}\t{}", rgb_variance, path.display());
- if rgb_variance > threshold {
- rename(path);
- }
- }
- }
复制代码 可以通过环境变量 THRESHOLD 指定阈值, 默认 1.0
下载地址: https://send.firefox.com/downloa ... 2Rsz_HhEtyBcV_3maww
交叉编译真爽!
Firefox Send 真爽! |