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

刪除重復(fù)圖片的軟件

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

軟件介紹

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

刪除重復(fù)圖片的軟件

刪除重復(fù)圖片作者說明

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

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

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]待清理的文件夾內(nèi)如果還包含了文件夾也同樣可以清理![/#00CED1][#0000FF]

@@@@@@@@  @@@  @@@  @@@  @@@  @@@  @@@   @@@@@@   @@@       @@@  @@@   @@@@@@        @@@  @@@  @@@  @@@  

@@@@@@@@  @@@  @@@  @@@  @@@  @@@  @@@  @@@@@@@@  @@@       @@@  @@@  @@@@@@@@       @@@  @@@  @@@@ @@@  

@@!       @@!  @@@  @@!  @@@  @@!  @@@  @@!  @@@  @@!       @@!  @@@  @@!  @@@       @@!  @@!  @@!@!@@@  

!@!       !@!  @!@  !@!  @!@  !@!  @!@  !@!  @!@  !@!       !@!  @!@  !@!  @!@       !@!  !@!  !@!!@!@!  

@!!!:!    @!@  !@!  @!@!@!@!  @!@  !@!  @!@!@!@!  @!!       @!@  !@!  @!@  !@!       !!@  !!@  @!@ !!@!  

!!!!!:    !@!  !!!  !!!@!!!!  !@!  !!!  !!!@!!!!  !!!       !@!  !!!  !@!  !!!       !!!  !!!  !@!  !!!  

!!:       !!:  !!!  !!:  !!!  !!:  !!!  !!:  !!!  !!:       !!:  !!!  !!:  !!!       !!:  !!:  !!:  !!!  

:!:       :!:  !:!  :!:  !:!  :!:  !:!  :!:  !:!   :!:      :!:  !:!  :!:  !:!  !!:  :!:  :!:  :!:  !:!  

 ::       ::::: ::  ::   :::  ::::: ::  ::   :::   :: ::::  ::::: ::  ::::: ::  ::: : ::   ::   ::   ::  

 :         : :  :    :   : :   : :  :    :   : :  : :: : :   : :  :    : :  :    : :::    :    ::    :  

[/#0000FF]                                                                  [#00CED1]待清理的文件夾內(nèi)還包含文件夾也可清理![/#00CED1]""")

path = input(r"輸入圖片文件夾路徑,例如 D:\python\tupian:")

try:

    file = os.walk(path)    # 遍歷目錄;

except FileNotFoundError:   # 捕獲路徑不存在異常;

    print('抱歉,沒有這個(gè)路徑!')

else:

    temp = set()    # 創(chuàng)建臨時(shí)集合;

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

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

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

    time1 = time()

    for path_name, dir_name, file_name in file:     # 遍歷walk返回3個(gè)元素;

        for n in file_name:                         # 獲得每個(gè)文件名字;

            full_path = os.path.join(path_name, n)  # 拼接路徑和文件名,獲得文件完整路徑;

            file_count += 1                         # 文件計(jì)數(shù)+1;

            print(full_path)

            try:

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

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

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

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

                pass

            else:

                md5 = hashlib.md5()                                 # 創(chuàng)建MD5對象;

                md5.update(array)                                   # 獲取當(dāng)前圖片MD5;

                if md5.hexdigest() not in temp:                     # 如果哈希值沒有在集合中;

                    temp.add(md5.hexdigest())                       # 就把哈希值添加到集合中;

                else:

                    os.remove(full_path)                            # 如果在集合中就刪除當(dāng)前圖片;

                    print(full_path+'------------------已刪除')

                    del_count += 1                                  # 刪除計(jì)數(shù)+1;

    time2 = time()

    time3 = time2-time1

    if pass_count != 0:

        print('[#7CFC00]非圖片數(shù)據(jù):[/#7CFC00][#800000]{0}[/#800000] 個(gè).'.format(pass_count))

    print('[#800080]一共讀取圖片:[/#800080][#800000]{0}[/#800000] 張.'.format(file_count - pass_count))

    print('[#3CB371]刪除重復(fù)圖片:[/#3CB371][#800000]{0}[/#800000] 張.'.format(del_count))

    print('[#0000FF]總耗時(shí)為:[/#0000FF][#800000]{:.4f}[/#800000] 秒.'.format(time3))

input('按任意鍵結(jié)束!!!')  # 此條為了編譯成EXE或在命令行運(yùn)行腳本時(shí)能看見上面統(tǒng)計(jì)后數(shù)據(jù)所添加,如果在IDE中運(yùn)行可刪除;

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

其他版本下載

發(fā)表評(píng)論

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

TOP
軟件下載