Здравствуйте. Я работаю над кодом, в котором изображение будет сжиматься и переносить комментарии из старого изображения в новое изображение. сжатие работает плавно, но передача комментариев в новом изображении не работает и не отображается в свойствах -> комментарии изображения.
Я также использую [pyexiv2] https://github.com/LeoHsiao1/pyexiv2 для чтения и записи метаданных
При первом запуске все работает нормально, но при последующих запусках комментарии не отображаются вСвойства изображения -> комментарии больше. Я пытался посмотреть на код, может быть, я просто что-то отредактировал случайно, но это не так.
import glob2
from PIL import Image, ImageDraw, ImageFont
import os
import pyexiv2
def getImgPaths():
image_paths = glob2.glob('images/**/*.jpg')
return image_paths
# ? copy metadata from original to new
def moveMetaData(base_image, new_image):
print('***** Moving meta-data *****')
i = pyexiv2.Image(base_image)
meta_comment = i.read_exif()
# ? print comment
print("initial metacomment : " + meta_comment["Exif.Photo.UserComment"])
# ! encode comment to new image
new_image_encode = pyexiv2.Image(new_image)
# print("New Image Initial Tags: " + str(new_image_encode))
new_image_encode.modify_exif(
{"Exif.Photo.UserComment": meta_comment["Exif.Photo.UserComment"]})
o = new_image_encode.read_exif()
print("Inserted Comment to new image : " + o["Exif.Photo.UserComment"])
def compressImage(image_path):
im = Image.open(image_path)
image_name = os.path.basename(os.path.normpath(image_path))
print('Input file size : ', im.size)
print('Input file name : ', image_name)
print('Input Image Size : ', os.path.getsize(image_path))
out_parent_dir = os.path.join('out', image_path.split(image_name)[0])
print(out_parent_dir)
newpath = os.path.join('out', image_path)
if not os.path.exists(out_parent_dir):
os.makedirs(out_parent_dir)
im.save(os.path.join(out_parent_dir, image_name),
optimize=True, quality=50)
print('Success ' + image_path)
# ? copy metadata to new image
moveMetaData(image_path, newpath)
print('***** Compression Started *****')
for image_path in getImgPaths():
try:
compressImage(image_path)
except Exception as e:
print(e)
with open('logs/errors.txt', 'a') as fh:
print(str(e) + " : " + str(image_path), file=fh)
pass
print('***** Compression Ended *****')