使用Python批量在图片上显示图片创建日期

一般手机拍照图片都有图片创建时间,有时候时间久了忘记是什么时候拍的啦,后来想是否是可以通过python批量处理图片,把拍照时间显示到照片上。

下面是我写的一个脚本,可以批量处理图片,显示图片时间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
from PIL import Image, ImageDraw, ImageFont

from datetime import datetime
import os
import exifread

font = ImageFont.truetype(
'/Users/daren/PycharmProjects/MyFirstScrapyProject/MyFirstScrapyProject/spiders/DMFT1553353872846-2.ttf', 90)


def add_time(img, text):
draw = ImageDraw.Draw(img)
fillcolor = "#ffffff"
text_size_x, text_size_y = draw.textsize(text, font=font)
text_xy = (img.size[0] - text_size_x - 50, img.size[1] - text_size_y * 3)
draw.text(text_xy, text, font=font, fill=fillcolor)
img.save(new_path + '{}.jpg'.format(text + str(datetime.now().timestamp())), 'jpeg')


def list_file():
for file in os.listdir(origin_path):
file_path = origin_path + file

image = Image.open(file_path)
f = open(file_path, 'rb')
tags = exifread.process_file(f)
time = tags['EXIF DateTimeOriginal'].printable;
add_time(image, datetime.strftime(datetime.strptime(time, '%Y:%m:%d %H:%M:%S'), '%Y-%m-%d %H:%M:%S'))


origin_path = '/Users/daren/temp/aa/origin/'
new_path = '/Users/daren/temp/aa/new/'


if __name__ == '__main__':
list_file()

# f = open('/Users/daren/temp/aa/origin/IMG_20180317_162705.jpg', 'rb')
# tags = exifread.process_file(f)
# print(type(tags['EXIF DateTimeOriginal'].printable))
# print(tags)

其中用到了以下工具和知识。

  • ExifRead
    Easy to use Python module to extract Exif metadata from tiff and jpeg files.
    读取图片信息 Image Make,Image Model,EXIF DateTimeOriginal等相关信息
  • Pillow
    Python 图像处理标准库,支持python3.6

另一种思路是对图片进行分类,按照时间创建相应的文件夹,并把图片按照时间文件夹进行整理,功能参照下面脚本。
classify_picture.py

相关资料
分享到