MD5简介

MD5 即 Message-Digest Algorithm 5(信息-摘要算法5)。摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。MD5 是从MD2、MD3 和 MD4 发展而来的一种加密算法,其主要通过采集文件的信息摘要,以此进行计算并加密。通过MD5算法进行加密,文件就可以获得一个唯一的 MD5 值,这个值是独一无二的,就像我们的指纹一样。如果任何人对文件做了任何改动,其 MD5 值也就是对应的“数字指纹”都会发生变化。

图片去重实例

我们可以计算图片的 md5 值。若几张图片完全相同,则其 md5 值也完全相同,此时可以根据 md5 值是否相同来对图片进行去重处理。

以电脑F盘找中 images 文件夹为例,对其各个子文件夹内的图片进行去重

Python程序

Python 的 hashlib 提供了常见的摘要算法,如MD5,SHA1等。

import os
from hashlib import md5def main():path = 'F:/images'f = open('F:/images/md5.txt', 'w')list = []list1 = []#得到所有图片的路径,加到列表list1中root, dirs, files = next(os.walk(path))for i in range(len(dirs)):file = os.listdir(path + '/' + dirs[i])for j in range(len(file)):line = path + '/' +dirs[i] + '/' + str(file[j])list1.append(line)#计算每张图片的md5值,并将图片路径与其md5值整合到列表list中for n in range(len(list1)):hash = md5()img = open(list1[n], 'rb')hash.update(img.read())img.close()list2 = [list1[n], hash.hexdigest()]f.write(str(list2)+'\n')list.append(list2)#两两比较md5值,若相同,则删去一张图片m = 0while m < len(list):t = m + 1while t < len(list):if list[m][1] == list[t][1]:os.remove(list[t][0])del list[t]else:t += 1m += 1if __name__ == '__main__':main()
去重结果

计算的每张图片 md5 值

重复图片已去除



直接对某一文件夹内的图片进行去重

#得到所有图片的路径,加到列表list1中root, dirs, files = next(os.walk(path))for i in range(len(dirs)):file = os.listdir(path + '/' + dirs[i])for j in range(len(file)):line = path + '/' +dirs[i] + '/' + str(file[j])list1.append(line)

将上述代码改为以下代码即可

root, _, files = next(os.walk(path))for i in range(len(files)):line = path + '/' + str(files[i])list1.append(line)
实例展示

对一个文件夹 images11 中的图片去重

Python-计算md5值对图片去重相关推荐

  1. Python 计算MD5值 图片查重去重

    MD5 MD5 即 Message-Digest Algorithm 5(信息-摘要算法5).摘要算法又称哈希算法.散列算法. 它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进 ...

  2. Golang 计算MD5值示例

    Golang提供了"crypto/md5"包用来计算md5值,使用起来简单方便,解决了我长久以来的疑问^_^ 一种是直接调用md5计算 package mainimport (&q ...

  3. python 曲线分析_大数据分析之Python计算KS值并绘制KS曲线

    本篇教程探讨了大数据分析之Python计算KS值并绘制KS曲线,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. python实现KS曲线,相关使用方法请参考上篇博客-R语言实现K ...

  4. Golang 计算MD5值

    Golang 计算MD5值 关键词:golang 计算 md5 文件 字符串 代码 //MD5 func Md5SmallFile(path string) (string, error) {file ...

  5. python3将base64格式的图片保存为MD5值的图片

    python3将base64格式的图片保存为MD5值的图片 import os, base64 import cv2 import numpy as np import hashlib# QQ 273 ...

  6. 基于python和md5的相同图片查重

    通过爬虫获取的互联网图片,下载下来之后有一些是重复的,人眼检查的话费时费力,而且也很难查全.本文通过计算并比对图片的md5值来判断是否为重复图片,以备后用. MD5信息摘要算法(英语:MD5 Mess ...

  7. Python 获取md5值(hashlib)

    常用方法 import hashlib# 创建MD5对象,可以直接传入要加密的数据 m = hashlib.md5('123456'.encode(encoding='utf-8')) # m = h ...

  8. 计算MD5值有几种方式

    想知道计算"hello"的MD5值有几种方式 linux 命令行: [sm2env ~]# echo "hello" | md5sum | cut -d ' ' ...

  9. 怎样用python计算π的值_Python 计算 π 值的简单示例

    对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! π是一个无数人追随的真正的神奇数字.我不是很清楚一个永远重复的无理数的迷人之处.在我看来,我乐于计 ...

最新文章

  1. 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 第三次迭代 | 中心元变换 | 检验数计算 | 最优解判定 )
  2. ccs船级社认证费用多少_亚马逊UL507认证是什么?办理费用是多少?
  3. 《剑指offer》序列化二叉树
  4. Java用SAX解析XML
  5. 先装vs还是先装sql_锅炉给水泵的止回阀到底安装在出口阀前还是阀后?
  6. Docker-Compose快速搭建Oracle-11G系统
  7. kkfileview v2.0 发布,文件在线预览项目方案
  8. MFC开发IM-第三篇、资源视图--显示在另一个编辑器中打开
  9. 利用edge模拟ie8浏览器环境
  10. 2022年全球程序员平均薪资发布,中国排名很意外
  11. 安卓python编辑器-10 个平板电脑上的 Python 编辑器
  12. 【备读学术论文总览】研究方向论文清单
  13. ios 描述文件位置
  14. EM78P468 义隆单片机 单键触控
  15. 【C++】初识智能指针:智能在哪?
  16. SAP FICO 固定资产的四种折旧方式
  17. 浏览器兼容性工具 Spoon Browser Sandbox
  18. 45 STM32 IIC主机、从机通信实例(ma51t12b触摸按键芯片)
  19. libuv源码分析(1)事件循环分析
  20. matlab如何去除图像白边_MATLAB去除白边

热门文章

  1. 机器学习_4.隐马尔可夫模型初识
  2. JPA Unknown Id.generator: xxx
  3. doc转docx文件会乱吗_java下载doc/docx文件乱码的问题
  4. this is incompatible with sql_mode=only_full_group_by错误解决
  5. 移动互联网的创业机会在哪
  6. 重要经验八---UIImage转换为CVPixelBufferRef
  7. Linux虐我千百遍,我待linux如初恋
  8. Mysql 知行必会 “子查询”
  9. 【MES系统】这个表格让您秒懂MES制造执行系统与ERP企业管理系统的区别及联系
  10. 判定是否互为字符重排(入门算法30)