问题描述
我正在尝试更新元数据评论(详细信息 -> 描述 -> 评论) 在图像文件(jpg格式)中基于目录中的一堆图像 一定的标准。元数据注释是由空格分隔的字符串值。 元数据评论示例 - “ABC 123 07-04-21”等。请参阅附图。
我在与图像存储在同一目录中的 csv 文件中获得了一堆图像文件和注释。我需要将图像文件名与目录中存在的文件进行匹配,并将 csv 文件中的注释更新为图像元数据注释(详细信息 -> 描述 -> 注释)。
我尝试了几件事。能够找出如何更新 jpg 文件中的注释,尽管有效 对于单个图像。
用于更新单个 JPG 文件中的注释的代码片段。编码对于实际查看更新至关重要 jpg 文件中的注释。
im = Image.open("20210430.jpg")
exif_dict["0th"][piexif.ImageIFD.xpcomment] = "Test comments 12345".encode('utf-16le')
exif_bytes = piexif.dump(exif_dict)
im.save("20210430.jpg.jpg",exif=exif_bytes)
我尝试过的几件事:
from PIL import Image
import piexif
import pandas as pd
import glob
import os
--dataframe to store list of image file names and comments to update.
df1= pd.read_csv('FinalImageMetaData.csv')
--dataframe which has list of images file names in the directory.
df2=pd.read_csv('Listimage.csv')
merged_inner = pd.merge(left=df2,right=df1,left_on='IMAGE_NAME',right_on='IMAGE_NAME')
#merged_inner[['MetaDATA']]
images = glob.glob(r"C:.\.\Programs\*.jpg")
for image in images:
with open(image,'rb') as file:
img = Image.open(file)
exif_dict = piexif.load(img.info["exif"])
exif_dict["0th"][piexif.ImageIFD.xpcomment] = merged_inner[['MetaDATA']].encode('utf-16le')
exif_bytes = piexif.dump(exif_dict)
img.save(file,exif=exif_bytes)
IMAGE_NAME,MetaDATA
20210430.jpg,12345 02/27/2021 00:00:00
20210429.jpg,34567 02/27/2021 00:00:00
20210428.jpg,90897 02/27/2021 00:00:00
20210427.jpg,56789 02/27/2021 00:00:00
20210426.jpg,34567 02/27/2021 00:00:00
IMAGE_NAME
20210430.jpg
20210429.jpg
20210428.jpg
20210427.jpg
20210426.jpg
20210425.jpg
20210424.jpg
20210423.jpg
20210422.jpg
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)