python写一个将文件夹里的图片去重,保存到另一个文件夹中,如果没有文件夹则创建一个,给出详细的代码
时间: 2024-10-08 18:26:51 浏览: 43
Python中处理图片去重并保存到新目录,可以利用`os`、`shutil`、`hashlib`等模块。这里是一个基本的示例,使用了`PIL`库来打开和操作图像,并通过计算哈希值判断是否已经存在:
```python
import os
import hashlib
from PIL import Image
def get_image_hash(image_path):
img = Image.open(image_path)
hash_obj = hashlib.md5()
hash_obj.update(img.tobytes())
return hash_obj.hexdigest()
def move_unique_images(src_folder, dest_folder):
# 判断目标文件夹是否存在,不存在就创建
if not os.path.exists(dest_folder):
os.makedirs(dest_folder)
images = [f for f in os.listdir(src_folder) if os.path.isfile(os.path.join(src_folder, f)) and f.lower().endswith(('.jpg', '.jpeg', '.png'))]
for image_file in images:
src_path = os.path.join(src_folder, image_file)
dest_path = os.path.join(dest_folder, image_file)
# 计算哈希值
image_hash = get_image_hash(src_path)
# 如果新的哈希值对应的文件不存在于目标目录,就移动文件
if not os.path.exists(dest_path) or get_image_hash(dest_path) != image_hash:
shutil.move(src_path, dest_path)
# 使用函数
move_unique_images('source_folder', 'destination_folder')
```
在这个例子中,我们首先检查目标文件夹是否存在,如果不存在就创建。然后遍历源文件夹中的所有图片,计算它们的MD5哈希值,如果目标路径下还没有这个文件或者两个文件的哈希值不同,我们就把原文件移动到新位置。
阅读全文