整理相册的编程代码可以根据不同的需求和使用的编程语言进行分类。以下是一些基于Python的整理相册代码示例,这些代码可以帮助你按拍摄日期或其他标准对照片进行分类和整理。
1. 按拍摄日期分类
```python
from datetime import datetime
import os
from PIL import Image
from PIL.ExifTags import TAGS
import shutil
def get_photo_date(image_path):
try:
img = Image.open(image_path)
exif = img._getexif()
if exif:
for tag_id in exif:
tag = TAGS.get(tag_id, tag_id)
data = exif.get(tag_id)
if tag == 'DateTimeOriginal':
return datetime.strptime(data, '%Y:%m:%d %H:%M:%S')
except Exception as e:
print(f"Error processing {image_path}: {e}")
return None
def organize_photos(photo_folder, target_folder):
if not os.path.exists(target_folder):
os.makedirs(target_folder)
for file in os.listdir(photo_folder):
if file.lower().endswith(('.jpg', '.jpeg', '.png')):
file_path = os.path.join(photo_folder, file)
taken_date = get_photo_date(file_path)
if taken_date:
target_date_folder = os.path.join(target_folder, taken_date.strftime('%Y-%m-%d'))
if not os.path.exists(target_date_folder):
os.makedirs(target_date_folder)
shutil.move(file_path, os.path.join(target_date_folder, file))
设置相片文件夹路径和目标文件夹路径
photo_folder = 'path/to/photo/folder'
target_folder = 'path/to/target/folder'
organize_photos(photo_folder, target_folder)
```
2. 使用ExifRead库提取EXIF信息
```python
from PIL import Image
import exifread
import os
from datetime import datetime
def get_photo_time(image_path):
with open(image_path, 'rb') as f:
tags = exifread.process_file(f)
if 'EXIF DateTimeOriginal' in tags:
return str(tags['EXIF DateTimeOriginal'])
return None
def organize_photos(photo_dir):
for root, dirs, files in os.walk(photo_dir):
for file in files:
if file.lower().endswith(('.jpg', '.jpeg', '.png')):
file_path = os.path.join(root, file)
photo_time = get_photo_time(file_path)
if photo_time:
target_date_folder = os.path.join(photo_dir, photo_time.split(' '))
if not os.path.exists(target_date_folder):
os.makedirs(target_date_folder)
shutil.move(file_path, os.path.join(target_date_folder, file))
设置相册目录
photo_dir = 'path/to/album'
organize_photos(photo_dir)
```
3. 使用Pillow库处理图片