import os from PIL import Image import imagehash from PIL import ImageFile ImageFile.LOAD_TRUNCATED_IMAGES = True # 这个方法的运用的意思是 当遇到数据截断的图片时,PIL会直接break,跳出函数,不报错,进行下一个 def delete_duplicate_images(directory): image_files = [] image_hashes = {} # 获取目录中的所有图片文件 for filename in os.listdir(directory): file_path = os.path.join(directory, filename) if os.path.isfile(file_path) and filename.lower().endswith(('.jpg', '.jpeg', '.png', '.gif')): image_files.append(file_path) # 计算每个图片的哈希值 for image_file in image_files: image = Image.open(image_file) image_hash = str(imagehash.average_hash(image)) # 检查哈希值是否已经存在 if image_hash in image_hashes: print(f"Deleting duplicate image: {image_file}") os.remove(image_file) else: # 保存哈希值以供后面的对比 image_hashes[image_hash] = image_file # 调用示例 directory = r'F:\QLDownload\Screenshots\tupian' # 图片目录路径 delete_duplicate_images(directory) ''' 义了一个delete_duplicate_images()函数,用于删除重复的图片。在函数内部, 我们首先通过os.listdir()方法获取目录中的所有文件,并筛选出图片文件。然后, 我们使用Image.open()方法打开每个图片,并使用imagehash.average_hash()方法计算图像的平均哈希值。 接下来,我们检查哈希值是否已经存在于image_hashes字典中,若存在则表示是重复图片,我们就将其删除。 最后,我们通过调用os.remove()方法来删除重复的图片文件。 请确保您已经安装了PIL和imagehash库,并且将图片目录路径正确传递给delete_duplicate_images()函数。 '''