Обновление комментариев метаданных в файле PNG в Python
Я пытаюсь обновить комментарии к метаданным (Подробности -> Описание -> Комментарии) в файлах изображений (формат 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)
Пример содержимого FinalImageMetaData.csv
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
Пример содержимого ListImage.csv
IMAGE_NAME
20210430.jpg
20210429.jpg
20210428.jpg
20210427.jpg
20210426.jpg
20210425.jpg
20210424.jpg
20210423.jpg
20210422.jpg
Пожалуйста, поделитесь любыми идеями / фрагментами кода.