python如何判斷文件夾內的重復圖片
步驟
1、首先將所有的圖片按照圖片大小(byte)進行分類,然后再進行分類比較。
2、重復圖片很有可能連續出現(因為重復圖片大小相同)
如果要判斷文件夾中是否有相同的圖片,則需要對文件夾中的所有圖片進行分類,并逐一判斷兩張圖片是否相同。
如果文件夾中有1000張圖片,則第一張圖片需要與剩余的999張圖片進行比較,第二張圖片需要與剩余的998張圖片進行比較,第三張圖片需要與剩余的997張圖片進行比較,以此類推。
實例
if__name__=='__main__':
load_path='E:\\測試圖片集(未去重)'#要去重的文件夾
save_path='E:\\測試圖片集(重復照片)'#空文件夾,用于存儲檢測到的重復的照片
os.makedirs(save_path,exist_ok=True)
#獲取圖片列表file_map,字典{文件路徑filename:文件大小image_size}
file_map={}
image_size=0
#遍歷filePath下的文件、文件夾(包括子目錄)
forparent,dirnames,filenamesinos.walk(load_path):
#fordirnameindirnames:
#print('parentis%s,dirnameis%s'%(parent,dirname))
forfilenameinfilenames:
#print('parentis%s,filenameis%s'%(parent,filename))
#print('thefullnameofthefileis%s'%os.path.join(parent,filename))
image_size=os.path.getsize(os.path.join(parent,filename))
file_map.setdefault(os.path.join(parent,filename),image_size)
#獲取的圖片列表按文件大小image_size排序
file_map=sorted(file_map.items(),key=lambdad:d[1],reverse=False)
file_list=[]
forfilename,image_sizeinfile_map:
file_list.append(filename)
#取出重復的圖片
file_repeat=[]
forcurrIndex,filenameinenumerate(file_list):
dir_image1=file_list[currIndex]
dir_image2=file_list[currIndex+1]
result=比較兩張圖片是否相同(dir_image1,dir_image2)
if(result=="兩張圖相同"):
file_repeat.append(file_list[currIndex+1])
print("\n相同的圖片:",file_list[currIndex],file_list[currIndex+1])
else:
print('\n不同的圖片:',file_list[currIndex],file_list[currIndex+1])
currIndex+=1
ifcurrIndex>=len(file_list)-1:
break
#將重復的圖片移動到新的文件夾,實現對原文件夾降重
forimageinfile_repeat:
shutil.move(image,save_path)
print("正在移除重復照片:",image)
以上就是python判斷文件夾內的重復圖片的方法,希望對大家有所幫助。更多Python學習教程請關注IT培訓機構:千鋒教育。