首页 > 解决方案 > 在 Django Admin 中上传图像时丢失元数据

问题描述

我想在我显示的图像的 exif 数据中添加版权声明。

我正在使用django-imagekitpiexif库。

当我上传然后在我的 Django 管理员中处理它们时,我无法保存或丰富图像的元数据。

这是我的模型:

class Still(models.Model):
    image = ProcessedImageField(upload_to='images',
                                           processors=[ResizeToFit(1024)],
                                           format='JPEG',
                                           options={'subsampling': 0, 'optimize': True, 'quality': 85}
                                           )

    img_th_watermarked = ImageSpecField(source='image',
                                    processors=[ResizeToFit(width=612), TextOverlayProcessor(), ExifCopyrightProcessor()],
                                    )

这是处理器:

def add_copyright_exif(image):

    copyright = "© {} my name".format(datetime.now().year)
    try:
        exif_dict = piexif.load(image.info["exif"])
    except KeyError as k:
        exif_dict = {"0th":{}}

    exif_dict["0th"][piexif.ImageIFD.Copyright] = copyright
    exif_bytes = piexif.dump(exif_dict)
    new_image = image.copy()
    new_image.info["exif"] = exif_bytes
    print(new_image.info)
    return new_image

class ExifCopyrightProcessor(object):
    def process(self, image):
        return add_copyright_exif(image)

print似乎显示正确的信息,其他处理器工作正常,但元数据在途中丢失。我也尝试删除格式选项。我不介意元数据在该ProcessedImageField步骤中丢失,但我应该能够在该ImageSpecField步骤中添加新信息。

图像和缓存版本存储在 S3 上。

在此先感谢您的帮助。

标签: pythondjangopython-3.xpython-imaging-librarydjango-imagekit

解决方案


推荐阅读