编写一个Python脚本,按照图片中的水印日期将含有相同日期的图片组织到一个新创建的文件夹中,并为这个文件夹使用相应的图片日期作为名称
时间: 2024-11-22 16:35:03 浏览: 5
Python代码源码-实操案例-框架案例-按照京东运营要求将图片批量处理为指定大小.zip
要编写一个Python脚本来根据图片的水印日期组织图片并创建文件夹,首先我们需要解析图片以提取水印信息,然后筛选出具有相同日期的图片,最后将这些图片放入对应的文件夹中。这里我们假设已经有一个库(如`PIL`或`opencv-python`)用于读取和处理图片,以及一个能够识别水印日期的方法。
以下是一个简单的示例:
```python
from PIL import Image
import os
import re
import datetime
import requests
# 假设watermark_extractor是一个能从图片中提取水印日期的函数
def watermark_extractor(img_path):
# 实现水印日期提取逻辑,返回日期字符串
pass
# 定义匹配日期的正则表达式
date_pattern = r'\d{4}-\d{2}-\d{2}'
# 根据URL下载图片并写入本地
def download_and_process_image(url, save_dir):
response = requests.get(url, timeout=10)
img_name = os.path.basename(url)
f = open(os.path.join(save_dir, img_name), "wb")
f.write(response.content)
f.close()
# 创建目录结构
def organize_images_by_date(image_dir, output_dir):
images_with_dates = []
for img in os.listdir(image_dir):
if img.endswith(('.jpg', '.jpeg', '.png')):
img_path = os.path.join(image_dir, img)
date = watermark_extractor(img_path)
if date:
images_with_dates.append((img_path, date))
# 对于每个日期,创建子文件夹并在其中保存图片
for date, img_paths in groupby(sorted(images_with_dates, key=lambda x: x[1]), lambda x: x[1]):
date_str = datetime.datetime.strptime(date, '%Y-%m-%d').strftime('%Y%m%d')
subfolder_name = f"{output_dir}/{date_str}"
os.makedirs(subfolder_name, exist_ok=True)
for img_path, _ in img_paths:
os.rename(img_path, os.path.join(subfolder_name, os.path.basename(img_path)))
# 使用上述函数
image_url_list = [...] # 图片的URL列表
save_dir = "temp" # 图片临时保存的目录
organized_output_dir = "organized_by_watermark" # 组织后的图片文件夹
for url in image_url_list:
download_and_process_image(url, save_dir)
organize_images_by_date(save_dir, organized_output_dir)
```
阅读全文