вместо того, чтобы проверять картинку на соответствие каждой следующей, лучше просто сделать словарь (размер : расположение) и если размер картинки будет в словаре, то сравнивать их контент. В случае совпадения будет выводиться сообщение с расположением этих одинаковых картинок
вот мой код, надеюсь он вам поможет:
import os from PIL import Image, ImageChops
print('Введите ПОЛНЫЙ путь к папке: ', end = '') directory_in_str = input()
directory = os.fsencode(directory_in_str) imgs = os.listdir(directory_in_str) dublicates = {} try: for file in os.listdir(directory): filename = os.fsdecode(file) last_name = directory_in_str last_name += '\\' + filename f_info = os.stat(last_name) if f_info.st_size in dublicates: image_1 = Image.open(last_name) image_2 = Image.open(dublicates[f_info.st_size]) result = ImageChops.difference(image_1, image_2) result = result.getbbox() if result == None: couter += 1 print(f'Найден дубликат: [{last_name} и {dublicates[f_info.st_size]}]') else: dublicates[f_info.st_size] = last_name except: print('Ошибка поиска директории!')
вместо того, чтобы проверять картинку на соответствие каждой следующей, лучше просто сделать словарь (размер : расположение) и если размер картинки будет в словаре, то сравнивать их контент. В случае совпадения будет выводиться сообщение с расположением этих одинаковых картинок
вот мой код, надеюсь он вам поможет:
import os
from PIL import Image, ImageChops
print('Введите ПОЛНЫЙ путь к папке: ', end = '')
directory_in_str = input()
directory = os.fsencode(directory_in_str)
imgs = os.listdir(directory_in_str)
dublicates = {}
try:
for file in os.listdir(directory):
filename = os.fsdecode(file)
last_name = directory_in_str
last_name += '\\' + filename
f_info = os.stat(last_name)
if f_info.st_size in dublicates:
image_1 = Image.open(last_name)
image_2 = Image.open(dublicates[f_info.st_size])
result = ImageChops.difference(image_1, image_2)
result = result.getbbox()
if result == None:
couter += 1
print(f'Найден дубликат: [{last_name} и {dublicates[f_info.st_size]}]')
else:
dublicates[f_info.st_size] = last_name
except:
print('Ошибка поиска директории!')
print(f'Программа завершила работу, файлов обработано [{couter}].')