在Django Admin中上载图像时丢失元数据

2024-05-18 12:33:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在显示图像的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上

提前感谢你的帮助


Tags: 数据图像imageinfoformatnewdictclass

热门问题