数码资源网·下载

展开

删除重复图片的软件

大小:42M语言:42M 类别:图像处理系统:WinXP/Win7/Win10
简介|文章|评论
版本:vPython版 for WinXP/Win7/Win10时间:2020-09-29
软件介绍

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

【软件介绍】

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

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

【软件特色】

1、PictureEcho提供简单的扫描查询方式;

2、点击开始扫描就可以分析用户设置的地址;

3、提供多种重复选择功能,扫描到图片以后可以自己选择重复查询模式;

4、支持在重复的图片保存较小的图片,从而删除体积大的图片;

5、支持保留每个组中的最新图像,从而选中拍摄时间很久的老照片删除。

【软件功能】

1、视觉相似度检测

4种相似度可供选择-显示准确,完整和清晰的结果;

2、精确重复的照片查找器

100%的相同照片被识别为重复照片;

3、自动选择重复的照片

根据文件大小,分辨率,文件历史记录和位置选择照片;

4、删除重复和相似的图像

永久删除重复的照片,占用磁盘空间;

5、图像预览和详细信息

预览结果,分析重复的照片和类似照片并采取措施;

6、将重复项移到新文件夹

创建一个新文件夹并在其中移动重复的图像。

【代码一览】

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

加载全部内容

相关应用
热门推荐
相关教程
猜你喜欢
图像处理软件

图像处理软件

有很多美美的照片不会处理?找不到合适的图像处理软件?图像处理...
进入专区>>
图片处理软件

图片处理软件

图像处理,提供软件类软件下载的站点,每天更新大量各类软件及技...
进入专区>>
相关合集
本类排行