告别EXIF旋转漏网:Czkawka相似图片查重3步上手
【免费下载链接】czkawkaMulti functional app to find duplicates, empty folders, similar images etc.项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka
手机备份里存了两千张照片,肉眼看着是同一张,查重工具却说它们"不一样"。问题往往出在 EXIF:手机拍照时会在图片里记录拍摄方向,一张竖着拍的图和它的横向副本,数据层面就是两张"不同"的图。做相似图片查重的工具如果不处理这个细节,结果就会漏掉一堆实际重复。开源工具 Czkawka 就是为了解决这类问题而生的重复文件查找工具。
Czkawka是什么:一台多合一的文件清理工具
Czkawka 是用 Rust 写的免费开源工具,一次扫描能找出重复文件、相似图片、空文件夹、临时文件等十几类"该清理的东西",提供图形界面和命令行两种用法。它适合想把旧硬盘、手机备份彻底整理一遍,又不想学复杂工具的用户。
它怎么破解EXIF旋转陷阱
相似图片检测的思路,相当于给每张照片拍一张 16x16 的"素描小头像"(感知哈希),两张图的头像越接近,相似度就越高。但手机照片里藏着 EXIF 方向参数:没读它就直接算哈希,像素布局会被旋转信息打乱,结果两张内容一样的图算出完全不同的"头像"。
Czkawka 的做法是先摆正再比较:加载图片时先读出 EXIF 方向参数,按 8 种可能的方向做旋转或翻转,核心逻辑在czkawka_core/src/common/image.rs里:
let rotation = get_rotation_from_exif(path).unwrap_or(None); let img_rotated = match rotation { Some(ExifOrientation::Rotate90CW) => img.rotate90(), // 其余7种方向同样处理 _ => img, };旋转只发生在内存里,不产生临时文件。这样同一张图的横竖版本、镜像版本,进入比较环节时都站在同一基准上。
快速上手:3步跑出第一个相似图片结果
第1步:拿到源码
git clone https://gitcode.com/GitHub_Trending/cz/czkawka cd czkawka第2步:编译命令行工具(需先装好 Rust 工具链)
cargo build --release --bin czkawka_cli第3步:扫描你的图片目录
./target/release/czkawka_cli image -d /path/to/your/images第4步:按需微调——默认相似度阈值-s 5(越小越严格)。截图和原图想严格匹配就调到 0-3,带水印、压缩过的图想放宽就调到 10-20:
./target/release/czkawka_cli image -d /path/to/your/images -s 10图形界面用户则不需要编译,直接下载对应平台的 Krokiet 构建包即可。
哪些场景下它比同类工具更省事
- 命令行原生支持:
czkawka_cli把每个扫描工具做成独立子命令,能写进脚本定期跑,多数同类工具只有图形界面 - 缓存加速:首次扫描后建立哈希缓存,二次、三次扫描明显更快
- 相似图片自动摆正:EXIF 旋转在加载时统一处理,旋转/镜像副本不再漏判
- 一个工具覆盖多类查找:除了图片,还能找相似视频、同内容音乐、损坏文件,且全程离线,不联网、不收集任何数据
写在最后
相似图片检测的准确性,往往就输在 EXIF 摆正这种不起眼的细节上;Czkawka 把它做进了图片加载的默认流程,还顺手覆盖了相似视频、损坏文件查找等场景。想深入了解每个子命令的完整参数,可以读仓库里的 instructions/Instruction_CLI.md,多语言说明见 instructions/Translations.md。
【免费下载链接】czkawkaMulti functional app to find duplicates, empty folders, similar images etc.项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考