Python通过图片文件内容的HashCode对比来删除相同图片

从零实现哈希算法与哈希表:Python实战解析核心原理与冲突处理 哈希算法是计算机科学中用于数据快速检索与组织的基础技术,其核心原理是将任意长度的输入通过哈希函数映射为固定长度的哈希值,实现近似O(1)时间复杂度的查找。这一机制支撑了哈希表(如Python字典)的高效运作,其技术价值在于通过空间换时间,极大提升了数据存取性能。在实际工程中,哈希算法广泛应用于数据完整性校验、密码存储、缓存去重与负载均衡等场景。本文以Python为例,深入探讨了从加法哈希到乘法哈希的经典实现,并详细解析了链地址法这一冲突解决策略,通过构建简易哈希表,揭示了负载因子与动态扩容对性能的影响,为理 阅读详情

《深度学习-如何提高数据集质量》

这次是通过图片文件内容的对比来删除相同的图片,为了有一个对比的方式,我先生成了网页,在网页中进行一个浏览,然后再打开删除语句,进行删除。效果如下:
在这里插入图片描述
就是这样网页效果比较粗糙,但能产生需要的效果。浏览完了就可以打开删除语句了。
代码如下:

import os
import hashlib

DirList = [
     '/home/king/PycharmProjects/nsfw_data_scrapper/raw_data/drawings',
    '/home/king/PycharmProjects/nsfw_data_scrapper/raw_data/hentai',
    '/home/king/PycharmProjects/nsfw_data_scrapper/raw_data/neutral',
    '/home/king/PycharmProjects/nsfw_data_scrapper/raw_data/porn',
    '/home/king/PycharmProjects/nsfw_data_scrapper/raw_data/sexy'
]

def getMD5(file, readLen = 1024*20):
    md5code = hashlib.md5()
    with open(file, 'rb') as f:
        data = f.read()

        # *********一定要注意这里下面的写法是错误的**********
        # 带有读取限制的方式是错误的,有的图片头部是相同的,往往有几十K的头,这些头都相同的,
        # 如果想加读取限制,保险的情况就是限制的大小和较小的那个文件相同。
        #data = f.read(readLen)

    md5code.update(data)

    ret = md5code.hexdigest()
    return ret

m = dict()
html_start = '<html>\n'\
    '<style>\n'\
	    'img{\n'\
		    'width: 200px;\n'\
		    'height: auto;\n'\
	    '}\n'\
    '</style>\n\n'\
    '<body>\n\n'

html_end = '</body>\n'\
            '</html>\n'

div_string = '<div>\n'\
		'<img src="%s" />\n'\
		'<img src="%s" />\n'\
	'</div>\n\n'

html = open('/home/king/Desktop/a.html', 'w')
html.write(html_start)

same = 0

for path in DirList:
    for filename in os.listdir(path):
        fullName = os.path.join(path, filename)
        if os.path.isfile(fullName):
            md5 = getMD5(fullName)
            if md5 not in m.keys():
                m[md5] = fullName
            else:
                html.write(div_string % (fullName, m[md5]))
                print(fullName, m[md5])
                # 使用时请打开
                #os.remove(fullName)
                same = same + 1
                # 这里写200个目的就是先通过网页检查一遍,如果没有错误,再打开删除语句。当然了这里只是测试代码。
                if(same > 200):
                    break
print(same)
html.write(html_end)
html.close()

文件哈希值实战指南:从原理到应用,掌握数据完整性校验 哈希函数是计算机科学中的基础概念,它将任意长度的数据映射为固定长度的唯一字符串,这一过程具有确定性、快速性和雪崩效应。其核心原理在于单向不可逆性,确保了数据指纹的唯一性。在技术价值上,哈希值为数据完整性校验、防篡改和唯一标识提供了可靠手段,广泛应用于软件分发、安全审计和系统开发中。例如,在软件分发场景,通过比对SHA256哈希值可验证ISO镜像的完整性;在安全事件响应中,文件哈希值能快速定位被篡改的系统文件。本文深入解析了MD5、SHA-1、SHA-2等算法的差异与选择,并提供了在Windows、macOS 阅读详情

相关推荐

OpenClaw智能体框架:Git+API Key+Serverless的工程化实践

智能体(Agent)是当前AI应用开发的核心范式,其本质是将大模型能力封装为可编排、可复用、可治理的服务单元。OpenClaw作为典型的智能体工作流编排框架,不依赖黑盒模型,而是基于Git版本控制实现Skill即插件、通过标准化API Key注入保障密钥安全、依托fal.ai等Serverless平台达成按需伸缩与成本可控。这种设计使开发者能聚焦业务逻辑而非基础设施,广泛适用于教育助教、客服自动化、多源信息聚合等需快速验证与弹性交付的场景。本文深入解析OpenClaw从环境初始化到生产部署的完整技术契约,尤

weixin_30416871的博客 314

Python 图片去重,删除重复图片

删除文件夹中相似图片的任务比较复杂,因为需要定义“相似”的标准,并且这通常涉及到图像内容分析。一种常见的做法是使用图像哈希(如感知哈希、平均哈希等)来比较图像之间的相似度。在Python中,可以使用一些库如Pillow(PIL的更新版)来处理图像,以及ImageHash库来生成图像哈希。

蜡笔小新星的博客 2020

OpenClaw(龙虾):Windows本地AI工作台深度解析

AI工作台是面向终端用户封装大模型调用、工具集成与交互界面的轻量级运行时环境,其核心原理在于屏蔽底层依赖(如Python环境、CUDA驱动、Docker),通过胶水层实现‘自然语言即操作’。技术价值体现在显著降低AI应用门槛,使非技术人员可在普通Windows设备上零配置启动并联动本地文件与SaaS服务。典型应用场景包括会议纪要生成、Excel智能解析、飞书审批自动化等办公高频任务。本文聚焦OpenClaw这一国产代表,深入剖析其基于Ollama的三层架构、Skill扩展机制与真实环境部署实践。

weixin_30813225的博客 338

python 删除文件夹中相似图片

利用python 删除文件夹中相似图片

互相学习的小博客 4315

计算机毕业设计源码高效利用指南:以Spring Boot音乐网站为例

在软件工程实践中,源码复用是提升开发效率、学习项目架构的重要手段,其核心原理在于对成熟代码逻辑和设计模式的理解与借鉴。对于计算机专业学生而言,毕业设计项目源码合集提供了宝贵的参考资源,其技术价值在于能快速搭建项目框架,理解Java、Python等主流技术栈在Web开发中的实际应用。然而,直接套用源码常伴随环境依赖、代码质量与安全漏洞等风险。以Spring Boot + MyBatis技术栈构建的儿童音乐分享网站为例,一个典型的应用场景是作为二次开发的基础。通过系统性地进行环境配置、源码解析、数据库优化及安全

weixin_34015336的博客 455

Web追踪技术全解析:从Cookie到指纹识别的攻防实战

在当今互联网生态中,用户行为追踪是支撑个性化推荐与精准广告投放的核心技术。其基本原理是通过在客户端存储唯一标识符或采集设备特征来识别用户身份,从而实现跨会话、跨页面的行为关联。从技术价值看,追踪技术不仅优化了用户体验,也为数据分析、产品优化和商业变现提供了关键支撑,广泛应用于电商、内容平台、广告营销等场景。然而,随着隐私意识的提升,以Canvas指纹和跨设备关联为代表的**高级追踪技术**不断演进,对用户隐私构成了新的挑战。本文聚焦于**浏览器指纹**等无状态追踪手段的实现原理与防御策略,通过技术拆解和实战

weixin_33908217的博客 314

Python 遍历文件夹,获取文件的hashcode

废话不说,直接代码,当然了,后头我给封装成类 import os import hashlib import json files=[] hashs=[] # get files under folder def getFiles(dicPath): global files for item in os.listdir(dicPath): if os.path.i...

weixin_43632687的博客 676

【16】linux命令/工具,systemd,文件操作,动静态库,信号,socket

apt install python3-pip --fix-missing(断开vpn,cp /etc/apt/sources.list /etc/apt/sources.list.bak,python3 -m pip install --upgrade pip,apt-get update,pip install 包名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com)设置时间,联网,apt-get install vim。

持续更新ing... 6785

python 删除相似的图片

主要应用在制作数据集时,将视频裁剪为图片,但多少帧取一张图片不太好选择,太密导致裁剪下来的图片太多,有很多重复的;太稀疏会丢失部分有用信息。可以选择在采集时密集一些,之后使用图片相似度判断,删除一些帧,以下是代码。

Deep learning小舟 2560

python图像去重. 删除重复或相似的图像

图像去重. 删除重复或相似的图像,感知哈希法,python

Zabbix华为交换机光衰告警

zabbix使用自动发现监控huawei网络设备光衰

qq_31651649的博客 4529

python 过滤相似图片_使用PIL,Python过滤部分图像

I can't understand how to apply blur filter to part of an image using PIL.I've tried to search with google and read PIL documentation but didn't find anything useful.Thanks for help.解决方案You can crop o...

weixin_31464715的博客 307

PX4/ArduPilot源码克隆提速秘籍:国内镜像与子模块优化全攻略

本文详细介绍了PX4/ArduPilot源码克隆的提速秘籍,包括使用国内镜像源和子模块优化技巧。通过阿木实验室、华为云等国内镜像,克隆速度可提升20倍,同时提供子模块替换和并行编译等实用方法,大幅提升开发效率。

weixin_29251567的博客 522

深度学习-如何提高数据集质量

写这篇写博客的目的是,大家做深度学习进行图片收集的时候,都会遇到数据集质量不高的情况,如何尽可能的提高数据集质量呢?我在这里进行探讨和学习。也希望大家多多给我留言和帮助。 《Python将文件大小以概率分布图的方式进行显示》 《Python检测JPEG、PNG是否完整》 ...

kingroc的博客 4918

开源数显表

开源数显表,广泛应用于车床、铣床、磨床、镗床、火花机、线切割等。市面上此类液晶数显表多数都是基于此项目。 一、基本配置 硬件 主控:STM32F407VGT6 LCD:群创AT070TN92 显示驱动:RA8875 光栅尺:3 x 输入(X/Y/Z) 串口:1 x MAX3232 继电器:2 x 输出 存储:AT24C64 模拟输入:LM324C 电源:AC 220V 软件 工程版本:Keil 5 STM32库:V1.4.0 图形界面:uCGUI 多语言支持:中文、英文 二、项目文

m0_70934529的博客 435

7系列ZYNQ硬件调试:Vitis无法识别ARM DAP的排查与解决

本文针对7系列ZYNQ开发中Vitis无法识别ARM DAP的典型硬件调试问题,提供了系统性的排查与解决方案。文章深入剖析了问题本质,指出ARM DAP无法访问的核心原因在于PS部分的电源、时钟或复位等硬件基础条件未满足,并重点强调了PS参考时钟(如33.333MHz晶振)的完整性是关键排查点。通过从电源完整性、时钟与复位信号到JTAG连接与焊接的逐步硬件排查,并结合软件配置交叉验证,为开发者提供了清晰的故障定位思路与实战指南。

weixin_29280657的博客 624

php 删除redis队列,php redis队列操作

Binary Tree Inorder TraversalGiven a binary tree, return theinordertraversal of its nodes' values. For example:Given binary tre ...Bash漏洞批量检测工具与修复方案&amp;lt;img src="http://image.3001.net/images/...

weixin_34847426的博客 805

直流有刷电机控制 - 认识电机(一)

电机控制学习

u011030644的博客 917

Java开发中MD5的五大实用场景与安全替代方案

哈希函数是计算机科学中用于将任意长度数据映射为固定长度摘要的核心算法,其核心原理是通过特定数学变换生成唯一性标识。在工程实践中,哈希函数广泛应用于数据完整性校验、快速查找和唯一标识生成等场景,其技术价值在于平衡计算效率与结果唯一性。MD5作为一种经典的哈希算法,因其实现简单、计算速度快,在非安全敏感的场景中仍有其用武之地,例如文件完整性校验和缓存键生成。然而,在涉及密码存储或数字签名等安全敏感领域,MD5的抗碰撞性缺陷使其无法抵御恶意攻击,必须转向更安全的替代方案。本文通过具体代码示例,系统剖析了MD5在J

weixin_33749131的博客 374

Open3D——RANSAC拟合球面【2026最新版】

RANSAC三维点云球面拟合,博客长期更新,本文最新更新时间为:2026年3月5日。

点云侠的博客 4083

【异常】Claude Code 400错误(Extra inputs are not permitted)解决方案

摘要:Claude Code 2.0.37+版本因API请求包含未支持的custom.input_examples参数导致400错误,使核心功能失效。解决方案是降级至稳定版v2.0.32:先卸载当前版本(npm uninstall -g @anthropic-ai/claude-code),再安装指定版本(npm install -g @anthropic-ai/claude-code@2.0.32),最后验证请求是否恢复正常。该问题确认在v2.0.32版本不存在。(148字)

奶爸的编程之路,也就一周冷个三天 2036

数据结构核心:从数组到哈希表,如何选择与优化数据组织方式

数据结构是计算机科学中组织与管理数据的基础,其核心在于通过特定的逻辑结构(如线性、树形、网状)与物理存储方式,实现数据的高效存取与操作。理解其原理,关键在于分析时间与空间复杂度,掌握“空间换时间”或“时间换空间”的权衡策略。这一技术价值在于,它能显著提升程序性能与资源利用率,是构建高性能系统的基石。应用场景广泛,从日常的数组查找、链表增删,到数据库索引(B+树)、缓存系统(哈希表)和任务调度(优先队列),都离不开数据结构的支撑。本文聚焦于数组、链表、栈、队列、树、图及哈希表等核心结构,通过对比其操作成本(如

weixin_30460489的博客 304

SKILL 是什么?怎么做?五分钟 带你从入门到精通

skill-creator 是 Anthropic 官方开源的“元技能”——一个专门用来创建 Skill 的 Skill。你只需要用自然语言描述想要什么功能,它会自动生成。从更宏观的视角看,Skills 的出现标志着 AI 编程的一次范式转变。在传统的 AI 编程中,代码是确定性的:1 是 1,2 是 2。但到了大模型时代,代码变得不确定——你不知道模型会输出什么,不知道它会不会突然删掉几行代码。这种不确定性让很多开发者感到不安。Skills 把这套逻辑又拉了回来。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 640

Java零基础入门:数组、集合与字符串核心原理与实战应用

在编程中,数据结构是组织和存储数据的核心机制,其设计直接影响程序的效率和可维护性。数组作为最基本的数据结构,提供了固定长度、连续存储的高效访问方式,但其静态特性在处理动态数据时存在局限。为解决这一问题,Java集合框架应运而生,它通过List、Set、Map等接口和类,封装了链表、哈希表等动态数据结构,支持数据的灵活增删改查。字符串作为表示文本的不可变对象,其常量池和不可变性特性对内存管理和性能优化至关重要。理解数组、集合和字符串的原理与差异,是掌握Java编程的基础,也是应对面试和实际开发中数据处理、集合

weixin_30323631的博客 574

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Redis大Key优化实战:从分片策略到面试满分回答

在分布式缓存系统中,Key-Value存储是核心数据模型,其设计直接影响系统性能和稳定性。Redis作为高性能内存数据库,采用单线程事件循环模型处理命令,这意味着单个耗时操作会阻塞后续请求,引发服务延迟。大Key问题正是这一原理下的典型性能瓶颈,它会导致内存分配不均、网络拥塞,甚至引发数据倾斜。从技术价值看,优化大Key不仅能提升缓存读写效率,更是保障高并发场景下服务可用性的关键。在实际应用场景中,电商会话管理、社交关系链存储、实时排行榜等业务常面临数据膨胀挑战。本文聚焦Redis大Key的**分片策略**

weixin_30568591的博客 316

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

数据结构工程思维:从数组哈希表到系统设计,提升编程效率的核心范式

数据结构是计算机科学中组织、存储和管理数据的基础技术,它通过定义数据间的逻辑关系与操作规则,为高效算法提供支撑。其核心原理在于针对不同操作场景(如查找、插入、删除)设计专用结构,以空间或时间复杂度的优化换取性能提升。在工程实践中,数据结构的技术价值体现在提升程序执行效率、降低资源消耗及简化系统设计复杂度。从数组、链表等线性结构,到树、哈希表等非线性结构,各自对应着不同的应用场景:数组适用于随机访问,链表利于频繁增删,哈希表实现近常数时间查找,而树结构则服务于层次化数据与快速检索。理解这些结构的本质差异与适用

weixin_30555515的博客 298

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: Python删除小图片
下一篇: Python获取文件的真实格式并修正扩展名
王小鹏鹏
博客等级 码龄23年 316粉丝 162原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值