因为在实习中运用到了用md5对图片进行去重,我发现Python里面直接就有封装好的库hashlib,提供常用的摘要算法,如MD5和SHA1。

摘要算法:又称为哈希算法,散列算法,简单来说就是将一系列原始的数据转化为长度固定的数据串,通常以16进制表示,从而来进行进一步的比对。例如:有一张图片1.jpg,并附上它的摘要为‘1234abcd90ad123458dfaecb12345678’,当有人又上传了一张图片2.jpg,如果这两张图片不同,那么它的摘要就会不同。

摘要算法就是通过预先设定好的函数将输入数据转化为固定长度的摘要,从而判定源数据是否被修改。

特点:(1)完全相同的一段数据,尽管命名不同,不论时间地点(加密算法相同的条件)加密出的32位的字符串完全相同。

(2)但不同的数据可能会得到相同的摘要,称为碰撞,因为是在有限的集合里映射;

(3)逆向解密过程很难,散列能力强,安全。

Example:

通过一小段Python代码来举例说明:

输入的图片文件如下:

其中包含了许多重复的文件。

代码:

import os
import hashlibdef get_md5(file):file = open(file,'rb')md5 = hashlib.md5(file.read())file.close()md5_values = md5.hexdigest()return md5_valuesfile_path = "C:\\wanjingyi\\files"
os.chdir(file_path)
file_list = os.listdir(file_path)
md5_list =[]
for file in file_list:md5 = get_md5(file)if md5 not in md5_list:md5_list.append(md5)else:os.remove(file)

执行程序后的结果:

可见,重复的图片已经被去掉了,这里用的是SHA1。

Python md5去重图片文件相关推荐

  1. python实现批量图片/文件重命名

    python实现批量图片/文件重命名 import osclass BatchRename():'''批量重命名文件夹中的图片文件'''def __init__(self):self.path = ' ...

  2. python读取raw图片文件_python读取raw binary图片并提取统计信息的实例

    python读取raw binary图片并提取统计信息的实例 发布时间:2020-09-08 23:22:52 来源:脚本之家 阅读:66 用python语言读取二进制图片文件,并提取非零数据统计信息 ...

  3. 【python】 对图片文件命名进行相似度对比

    一.首先导入模块 import difflib import os import os.path 二.设置txt文件 txt = '图片路径.txt' #将放置文件命名的txt设置 三.自主输入目标文 ...

  4. python读取raw图片文件_在python下读取并展示raw格式的图片实例

    raw文件可能有些人没有,因此,先用一张图片创建一个raw格式的文件(其实可以是其他类型的格式文件) import numpy as np import cv2 img = cv2.imread('c ...

  5. python读取raw图片文件_【IT专家】使用Python读取CR2(原始佳能图像)头。

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 使用 Python 读取 CR2( 原始佳能图像 ) 头. 2010/09/12 6673 I'm trying to extract the d ...

  6. python heic后缀图片文件转换成jpg格式

    参考链接: https://stackoverflow.com/questions/54395735/how-to-work-with-heic-image-file-types-in-python ...

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

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

  8. Python批量导入图片生成PowerPoint 2007+文件

    说明:本文是"Python批量爬取微信公众号文章中的图片"的后续文章,用来把从公众号批量抓取的图片还原为PowerPoint 2007文件. 使用方法:安装扩展库python-pp ...

  9. python十行代码实现文件去重,去除重复文件的脚本

    导入依赖 '''导入依赖'''from pathlib import Pathimport filecmp 函数说明 ''' filecmp.cmp(path1, path2, shallow=Tru ...

最新文章

  1. 基于 Android NDK 的学习之旅-----资源释放
  2. faiss简介及示例
  3. vue中 this.$set的用法
  4. 俄亥俄州立大学计算机科学转学成功,俄亥俄州立大学转学成功率83.38%!!
  5. 华为手机harmonyos系统,华为王成录:手机销量仍在增长 未来会是HarmonyOS系统的中心...
  6. Jmeter系列之简介与环境安装
  7. 传智播客java教程视频资源,附学习笔记+面试整理+进阶书籍
  8. 如何在Win10中运行Win7小游戏 扫雷,蜘蛛纸牌,红心大战,纸牌,空当接龙?
  9. c语言pow函数原型_C语言pow函数
  10. SQLite数据库中的.db-shm文件和.db-wal文件
  11. 我是住在山里的小和尚,我把我的寺庙生活告诉大家[转载之2]
  12. ios 视频选择封面功能
  13. 2021-2027全球与中国双断面隔离器市场现状及未来发展趋势
  14. java实现md5签名算法
  15. 作为项目经理你应该掌握的关键链法
  16. java word apache poi 操作word模板。
  17. numpy数组保存至txt时一系列问题及其解决方案
  18. 【第114期】五大经典风控系统全面解读
  19. 综合实践活动信息技术小学版第三册电子课本_人教版小学美术16年级电子课本图片+教材分析...
  20. Appium原理学习笔记

热门文章

  1. vue生命周期+微信小程序生命周期详解
  2. 苹果手机上滑动会卡顿_iPhone手机卡顿怎么办?iPhone手机卡顿解决办法
  3. 假如需要一百万个对象
  4. sql server DateName、DatePart 函数
  5. Mac录屏同时录制系统声音和画外音(Soundflower无法安装解决方案)
  6. python数组两个冒号_python数组冒号取值操作
  7. 什么是User Story
  8. 科目要求一个成本会计分配
  9. wps单元格内怎样批量换行_Wps单元格内如何换行 ? 这些经验不可多得
  10. 苹果x怎么截屏_iPhone X小白点怎么设置 iPhone X小白点设置方法【详解介绍】