重复图片怎么查:SHA-256、感知 Hash 与人工去重的正确用法
同一张图片改尺寸或重新压缩后,普通文件 Hash 会完全不同。本文解释精确重复、dHash 感知指纹、相似度阈值、误报,以及整理照片和商品素材的安全去重流程。
打开配套工具 →素材目录里常见这样的文件:
product-main.jpg
product-main-copy.jpg
product-main-1200.jpg
product-main-final.webp
product-main-final-2.jpg只看文件名,很难判断哪些只是复制,哪些经过压缩,哪些真的修过图。按文件大小排序也不可靠:同一张图换成 WebP 后可能小很多,另一张看起来相同的 JPG 可能因为 EXIF 和质量参数更大。
重复图片 / 相似照片查找工具会在浏览器本地计算两层指纹:SHA-256 找字节完全一致的文件,dHash 找视觉上接近的候选。结果按组预览,但不会直接删除磁盘文件。
SHA-256 只能找“文件完全一样”
SHA-256 会根据文件全部字节生成摘要。两份文件只要有一个字节不同,结果通常就完全不同。
它非常适合确认:
- 同一文件被复制到多个目录;
- 下载文件是否与原件一致;
- 重命名后的文件是否没有变化;
- 归档传输是否完整。
但下面操作都会改变 SHA-256:
- 重新保存 JPG;
- 删除 EXIF;
- PNG 转 WebP;
- 把 2000×2000 缩小为 1000×1000;
- 只改一项图片元数据;
- 调整压缩质量。
因此“SHA 不同”只能说明文件字节不同,不能说明画面内容不同。
需要单独核对某个文件时,可以使用 Hash 摘要工具计算 SHA-256。
感知 Hash 比较的是画面轮廓
dHash 是一种简单、快速的感知指纹。常见做法是把图片缩小成 9×8 灰度图,再逐行比较相邻像素亮度:
- 左边更亮,记录 1;
- 右边更亮或相同,记录 0。
8 行、每行 8 次比较,最终得到 64 位指纹。
两张图片指纹之间不同的位数称为 Hamming distance。距离越小,缩小后的亮度方向越接近。
这种方法不关心原始文件大小和压缩格式,所以能发现不少:
- JPG 重新压缩;
- PNG 转 JPG 或 WebP;
- 等比缩放;
- 轻微亮度和颜色调整;
- 少量编码噪声。
它计算快、结果可解释,适合在浏览器批量初筛。
dHash 不是“图片内容理解”
dHash 看的是整体亮度结构,不知道画面里是人、商品还是文字。
下面变化可能让同一张图无法匹配:
- 大幅裁剪;
- 旋转 90 度;
- 左右翻转;
- 添加厚边框;
- 拼接多张图;
- 在主要区域覆盖大段文字;
- 把主体移动到不同位置。
反过来,构图相似的两张图也可能得到接近指纹,例如同一模板中的不同商品,或大面积纯色背景的海报。
为了减少误报,工具还会比较宽高比和平均颜色。即便如此,分组仍然只是候选,必须看缩略图。
阈值应该怎样调
64 位 dHash 中,距离 0 表示亮度比较结果完全相同,但不代表文件字节相同。
可以把阈值理解为:
0–4:严格,优先找非常接近的版本;5–8:适合常见重新压缩和轻微缩放;9–12:更宽松,可能找出编辑版本,也会增加误报;- 更高:只适合明确知道素材构图高度一致、并愿意逐组人工检查的场景。
阈值不能脱离图片类型。商品白底图、证件扫描件和网页截图的结构比较固定,应使用较严格设置;活动海报和摄影照片变化更复杂,可能需要放宽,但误报也更多。
宽高比容差用于排除横图和竖图误分组。平均颜色距离则减少黑白结构相近、颜色完全不同的图片被放在一起。
调整一个参数后,要观察:
- 已知副本是否仍在同组;
- 明显不同的图片是否开始混入;
- 每组代表图是否符合保留目的。
“建议保留分辨率最高”为什么不总是对
工具默认优先保留像素更多、文件更大的图片,这是一个偏向源文件的保守规则,但它不了解素材业务。
真正需要保留的可能是:
- 已完成修图、但尺寸较小的发布版;
- 有透明背景的 PNG;
- 颜色正确的品牌版本;
- 带授权记录和规范命名的文件;
- 没有水印的原图;
- 已删除定位信息的交付版。
所以不要把“建议保留”直接理解成“其余可以删除”。先比较透明背景、边缘、文字、颜色和元数据,再决定。
需要清除拍摄地点、设备和编辑信息时,可以在确认保留文件后使用 图片隐私清理工具重新导出。
为什么网页不直接删除原文件
浏览器文件选择器默认只授予读取权限。网页可以处理用户明确选择的文件并生成新下载,但不应该悄悄移动或删除磁盘内容。
更安全的去重流程是:
- 在网页中生成分组和待复核清单;
- 下载建议保留项 ZIP,确认每组都有一份;
- 回到 Finder、资源管理器或数字资产管理系统;
- 按清单逐组移动到临时目录;
- 业务确认后再清空临时目录。
重要素材应先备份。不要在唯一副本目录里进行不可恢复的批量删除。
动图、HEIC 和 SVG 要注意什么
动画 GIF 在普通图片解码流程中通常只按某一静态帧参与比较,两个动画第一帧相同不代表后续内容相同。
AVIF 是否可用取决于浏览器解码能力。HEIC/HEIF 可以先用 HEIC 转换工具转为 JPG、PNG 或 WebP,再与其他素材一起检查。
SVG 是 XML 文档,可以包含外部资源、样式和脚本语义,不应不加区分地当作普通位图批量载入。矢量图标更适合比较规范化后的 SVG 源码或使用专门的 Sprite 工具整理。
总结
图片去重没有一个“相似度超过 90% 就自动删除”的可靠规则。
SHA-256 负责确认完全相同,感知 Hash 负责缩小候选范围,宽高比和颜色负责减少一部分误报,最后仍要由人判断哪一张是正确版本。
把工具当作整理助手,而不是删除权限。先分组、再复核、保留备份,才能真正减少素材混乱,而不是制造一次更难恢复的误删。