一、概述
- 通常通过手机或相机拍摄的图片中影藏了照片的属性信息和拍摄数据,主要通过EXIF(Exchangeable image file format: 可交换图像文件格式) 进行存储这部分信息
- 该部分信息可以被修改,另外也可通过图像信息影藏方式,往图像中写入特定的信息,可用于信息加密等
二、解析图片拍照时间
- 环境中需要先安装exifread,采用下面命令进行:
pip install exifread
import os
import exifread
def getExif(path, filename):
old_full_file_name = os.path.join(imgpath, filename)
FIELD = 'EXIF DateTimeOriginal'
fd = open(old_full_file_name, 'rb')
tags = exifread.process_file(fd)
fd.close()
if FIELD in tags:
print("\nstr(tags[FIELD]): %s" %(str(tags[FIELD])))
print("\nstr(tags[FIELD]).replace(':', '').replace(' ', '_'): %s" %(str(tags[FIELD]).replace(':', '').replace(' ', '_')))
print("\nos.path.splitext(filename)[1]: %s" %(os.path.splitext(filename)[1]))
new_name = str(tags[FIELD]).replace(':', '').replace(' ', '_') + os.path.splitext(filename)[1]
print("\nnew_name: %s" %(new_name))
time = new_name.split(".")[0][:13]
new_name2 = new_name.split(".")[0][:8] + '_' +filename
print("\nfilename: %s" %filename)
print("\n%s的拍摄时间是: %s年%s月%s日%s时%s分" %(filename,time[0:4],time[4:6],time[6:8],time[9:11],time[11:13]))
new_full_file_name = os.path.join(imgpath, new_name2)
else:
print('No {} found'.format(FIELD),' in: ', old_full_file_name)
imgpath = "/home/yph001/python_photo/photo/"
for filename in os.listdir(imgpath):
full_file_name = os.path.join(imgpath, filename)
if os.path.isfile(full_file_name):
getExif(imgpath, filename)
print(full_file_name)
- 其中,主要通过
tags = exifread.process_file(fd)
这个函数读取了图片的exif信息,其中读取的图片信息大致包含以下内容:
{
'Image ImageWidth': (