Gau*_*are 8 python image image-processing
由于错误的相机日期设置,我有超过500张图像(png/jpg)有错误的拍摄日期(拍摄日期).我将照片移动到手机和移动画廊,根据"拍摄日期"对照片进行排序.我希望所有照片都按顺序显示.
那么如何使用python脚本更改捕获日期(使用日期)?
没有真正需要编写Python,你可以在终端使用中的一行中完成jhead
.例如,将所有EXIF时间向前调整1小时
jhead -ta+1:00 *.jpg
Run Code Online (Sandbox Code Playgroud)
做一个COPY你的文件,并对它进行测试后第一个!
从这里下载.
I might be late to this party, but i wrote a python script for bulk changing taken time field for whatsapp photos based on filename format Eg: IMG-20160117-WA0001.jpg. Also this does not overwrite the existing properties. https://github.com/dsouzawilbur/Scripts/blob/master/Change_Photo_Taken_Time.py
from datetime import datetime
import os
import re
import piexif
def absoluteFilePaths(directory):
for dirpath,_,filenames in os.walk(directory):
for f in filenames:
fullPath = os.path.abspath(os.path.join(dirpath, f))
if re.match(r"^IMG-\d\d\d\d\d\d\d\d-WA\d\d\d\d.*", f) and not re.match(r"^IMG-\d\d\d\d\d\d\d\d-WA\d\d\d\d-ANIMATION.gif", f):
print(f+" Matched")
match = re.search("^IMG-(\d\d\d\d)(\d\d)(\d\d)-WA\d\d\d\d.*", f)
year = match.group(1)
month= match.group(2)
day = match.group(3)
exif_dict = piexif.load(fullPath)
#Update DateTimeOriginal
exif_dict['Exif'][piexif.ExifIFD.DateTimeOriginal] = datetime(int(year), int(month), int(day), 4, 0, 0).strftime("%Y:%m:%d %H:%M:%S")
#Update DateTimeDigitized
exif_dict['Exif'][piexif.ExifIFD.DateTimeDigitized] = datetime(int(year), int(month), int(day), 4, 0, 0).strftime("%Y:%m:%d %H:%M:%S")
#Update DateTime
exif_dict['0th'][piexif.ImageIFD.DateTime] = datetime(int(year), int(month), int(day), 4, 0, 0).strftime("%Y:%m:%d %H:%M:%S")
exif_bytes = piexif.dump(exif_dict)
piexif.insert(exif_bytes, fullPath)
print("############################")
absoluteFilePaths("__DIRECTORY_WITH_PHOTOS__")
Run Code Online (Sandbox Code Playgroud)
使用该piexif
库很容易做到:
from datetime import datetime
import piexif
filename = 'image.jpg'
exif_dict = piexif.load(filename)
exif_dict['Exif'] = { piexif.ExifIFD.DateTimeOriginal: datetime(2018, 1, 1, 0, 0, 0).strftime("%Y:%m:%d %H:%M:%S") }
exif_bytes = piexif.dump(exif_dict)
piexif.insert(exif_bytes, filename)
Run Code Online (Sandbox Code Playgroud)
该脚本会将新日期2018:01:01 00:00:00
插入的Date Taken
EXIF字段值中image.jpg
。