分类
大小:42M更新:2020-09-27
类别:图像处理系统:WinXP,Win7,win8
删除重复图片的软件,由论坛大神原创制作的一个由Python编写的删除重复图片程序,可以一键删除文件中重复的图片资源,为您的PC节省空间,同时整理你的图库。需要能删除重复图片的软件的朋友们可以下载使用,单文件程序,绿色无广告。
今天闲来无事整理素材,发现有许多重复的图片,由于数量太多无法手动翻阅删除,想想写个代码,分析了一下重复图片有些是同名的,有些内容重复不同名,返回文件名清理放弃,图片大小也放弃放弃,后来选用计算MD5的方式清除,然后先是使用os.listdir()函数遍历文件夹下的图片,在测试过程中,如果文件夹下还包含文件夹就会引发异常,后来决定用os.walk()函数来遍历;
源码注释写的比较清晰,就不多阐述,可根据自己需要封装函数,制作成死循环,添加退出条件,复用;
import os,hashlib
import numpy as np
from PIL import Image,UnidentifiedImageError
from PIL.Image import DecompressionBombError
from rich import print
from time import time
print("""[#00CED1]待清理的文件夹内如果还包含了文件夹也同样可以清理![/#00CED1][#0000FF]
@@@@@@@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@@@@ @@@ @@@ @@@ @@@@@@ @@@ @@@ @@@ @@@
@@@@@@@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@@@@@@ @@@ @@@ @@@ @@@@@@@@ @@@ @@@ @@@@ @@@
@@! @@! @@@ @@! @@@ @@! @@@ @@! @@@ @@! @@! @@@ @@! @@@ @@! @@! @@!@!@@@
!@! !@! @!@ !@! @!@ !@! @!@ !@! @!@ !@! !@! @!@ !@! @!@ !@! !@! !@!!@!@!
@!!!:! @!@ !@! @!@!@!@! @!@ !@! @!@!@!@! @!! @!@ !@! @!@ !@! !!@ !!@ @!@ !!@!
!!!!!: !@! !!! !!!@!!!! !@! !!! !!!@!!!! !!! !@! !!! !@! !!! !!! !!! !@! !!!
!!: !!: !!! !!: !!! !!: !!! !!: !!! !!: !!: !!! !!: !!! !!: !!: !!: !!!
:!: :!: !:! :!: !:! :!: !:! :!: !:! :!: :!: !:! :!: !:! !!: :!: :!: :!: !:!
:: ::::: :: :: ::: ::::: :: :: ::: :: :::: ::::: :: ::::: :: ::: : :: :: :: ::
: : : : : : : : : : : : : : :: : : : : : : : : : ::: : :: :
[/#0000FF] [#00CED1]待清理的文件夹内还包含文件夹也可清理![/#00CED1]""")
path = input(r"输入图片文件夹路径,例如 D:\python\tupian:")
try:
file = os.walk(path) # 遍历目录;
except FileNotFoundError: # 捕获路径不存在异常;
print('抱歉,没有这个路径!')
else:
temp = set() # 创建临时集合;
del_count = 0 # 删除图片计数;
pass_count = 0 # 非图片计数;
file_count = 0 # 总文件计数;
time1 = time()
for path_name, dir_name, file_name in file: # 遍历walk返回3个元素;
for n in file_name: # 获得每个文件名字;
full_path = os.path.join(path_name, n) # 拼接路径和文件名,获得文件完整路径;
file_count += 1 # 文件计数+1;
print(full_path)
try:
with Image.open(full_path) as t: # 打开图片;
array = np.array(t) # 转为数组;
except (UnidentifiedImageError,DecompressionBombError): # 捕获不是图片,像素炸弹异常;
pass_count += 1 # 非图片计数+1;
pass
else:
md5 = hashlib.md5() # 创建MD5对象;
md5.update(array) # 获取当前图片MD5;
if md5.hexdigest() not in temp: # 如果哈希值没有在集合中;
temp.add(md5.hexdigest()) # 就把哈希值添加到集合中;
else:
os.remove(full_path) # 如果在集合中就删除当前图片;
print(full_path+'------------------已删除')
del_count += 1 # 删除计数+1;
time2 = time()
time3 = time2-time1
if pass_count != 0:
print('[#7CFC00]非图片数据:[/#7CFC00][#800000]{0}[/#800000] 个.'.format(pass_count))
print('[#800080]一共读取图片:[/#800080][#800000]{0}[/#800000] 张.'.format(file_count - pass_count))
print('[#3CB371]删除重复图片:[/#3CB371][#800000]{0}[/#800000] 张.'.format(del_count))
print('[#0000FF]总耗时为:[/#0000FF][#800000]{:.4f}[/#800000] 秒.'.format(time3))
input('按任意键结束!!!') # 此条为了编译成EXE或在命令行运行脚本时能看见上面统计后数据所添加,如果在IDE中运行可删除;
exit() # 如果在IDE中运行可删除;
Vexlio图表制作软件图像处理M1.1.2官方版
查看马克鳗markman图像处理Mv2.7.17 官方最新版
查看幻影坦克图片制作Mixed Picture Generator图像处理.08Mv1.1.0.0 绿色版
查看批量压缩图片质量图像处理.01Mv1.0.0.0 绿色免费版
查看照片变水彩画(Aquarella Watercolor)图像处理Mv1.30官方版
查看致速CAD横断面图绘制软件图像处理M免费版
查看晨光台历制作软件图像处理Mv5.6.1电子桌面台历版
查看32位系统Adobe Photoshop CC精简版图像处理M免费中文完整版
查看PhotoZoom Pro单文件最新版图像处理Mv8.0.6
查看MSteel结构工具箱【CAD插件】图像处理M2019最新版
查看图像编辑软件(Topaz Studio)图像处理Mv2.3.0官方版
查看斗图表情制作器最新版图像处理Mv1.6.1【全能版】
查看PhoXo(易笔易画)图像处理Mv8.3.0.0 PC版
查看优秀全套摄影资源教程及软件图像处理M最新版
查看幻灯片制作软件Picture Slideshow Maker 4dots图像处理Mv1.3 免费版
查看Astra Image图片修复处理软件图像处理Mv5.1.4.0 最新版
查看PS铅笔笔刷包图像处理.00Mv1.0免费版
查看图片漫画采集工具图像处理M
查看天正建筑TArch2014图像处理M免费版附注册机
查看CAD2004~2018版本软件附CAD插件工具图像处理M最新版含CAD学习资料
查看KeyShot实时光线追踪渲染图像处理M
查看涛轩穿越火线恶搞通知图像处理MV1.0绿色免费版
查看PDF文件修复工具(PDF Recovery Toolbox)图像处理Mv2.7.15 绿色版
查看Corel PaintShop Pro X9简体中文版图像处理Mv19.0.2.4 中英双语版
查看点击查看更多