91游戏 · 图片转换

删除重复图片的软件

删除重复图片的软件

删除重复图片的app,由论坛大神原创制作的一款由Python编写的删除重复图片程序,能够一键删除文件中重复的图片资源,为您的PC节省空间,与此同时整理你的图库。需要能删除重复图片的app的朋友们能够下载使用,单文件程序,绿色没有广告。

删除重复图片的软件

删除重复图片作者说明

今天闲来无事整理素材,发现有很多重复的图片,由于数量太多无法手动翻阅删除,想想写个代码,解析了一下重复图片有些是同名的,有些内容重复不一样名,返回文件名清理放弃,图片大小也放弃放弃,后来选用计算MD5的方式清除,然后先是使用os.listdir()函数遍历文件夹下的图片,在测试过程中,如果文件夹下还包含文件夹就会引发异常,后来决定用os.walk()函数来遍历;

源码注释写的比较清晰,就不多阐述,可通过自己需要封装函数,制作成死循环,添加退出条件,复用;

Python代码一览

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中运行可删除;

相关专题

如今照片图片信息量越来越大,外出旅游,生活照,QQ、微信所晒的照片大多数的时候我们想要处理编辑,比如合成、抠图、剪裁、美化、马赛克等,让图片更加美感,网上图片工具太多,到底那一款软件简单实用,下面给大家介绍几款不同的软件。

相关下载

取消
下载此应用的人还喜欢