西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
西西首頁 電腦軟件 安卓軟件 電腦游戲 安卓游戲 排行榜 專題合集

刪除重復圖片的軟件

Python版
  • 刪除重復圖片的軟件Python版
  • 軟件大小:42M
  • 更新時間:2020-09-27 17:43
  • 軟件語言:中文
  • 軟件廠商:
  • 軟件類別:國產(chǎn)軟件 / 免費軟件 / 圖像處理
  • 軟件等級:3級
  • 應用平臺:WinXP, Win7, win8
  • 官方網(wǎng)站:暫無
  • 應用備案:
好評:50%
壞評:50%

軟件介紹

刪除重復圖片的軟件,由論壇大神原創(chuàng)制作的一個由Python編寫的刪除重復圖片程序,可以一鍵刪除文件中重復的圖片資源,為您的PC節(jié)省空間,同時整理你的圖庫。需要能刪除重復圖片的軟件的朋友們可以下載使用,單文件程序,綠色無廣告。

刪除重復圖片的軟件

刪除重復圖片作者說明

今天閑來無事整理素材,發(fā)現(xiàn)有許多重復的圖片,由于數(shù)量太多無法手動翻閱刪除,想想寫個代碼,分析了一下重復圖片有些是同名的,有些內容重復不同名,返回文件名清理放棄,圖片大小也放棄放棄,后來選用計算MD5的方式清除,然后先是使用os.listdir()函數(shù)遍歷文件夾下的圖片,在測試過程中,如果文件夾下還包含文件夾就會引發(fā)異常,后來決定用os.walk()函數(shù)來遍歷;

源碼注釋寫的比較清晰,就不多闡述,可根據(jù)自己需要封裝函數(shù),制作成死循環(huán),添加退出條件,復用;

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()    # 創(chuàng)建臨時集合;

    del_count = 0   # 刪除圖片計數(shù);

    pass_count = 0  # 非圖片計數(shù);

    file_count = 0  # 總文件計數(shù);

    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                         # 文件計數(shù)+1;

            print(full_path)

            try:

                with Image.open(full_path) as t:    # 打開圖片;

                    array = np.array(t)             # 轉為數(shù)組;

            except (UnidentifiedImageError,DecompressionBombError): # 捕獲不是圖片,像素炸彈異常;

                pass_count += 1                                     # 非圖片計數(shù)+1;

                pass

            else:

                md5 = hashlib.md5()                                 # 創(chuàng)建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                                  # 刪除計數(shù)+1;

    time2 = time()

    time3 = time2-time1

    if pass_count != 0:

        print('[#7CFC00]非圖片數(shù)據(jù):[/#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或在命令行運行腳本時能看見上面統(tǒng)計后數(shù)據(jù)所添加,如果在IDE中運行可刪除;

exit()                  # 如果在IDE中運行可刪除;

軟件截圖

刪除重復圖片的軟件 Python版

其他版本下載

發(fā)表評論

昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
查看所有(0)條評論 > 字數(shù): 0/500

TOP
軟件下載