如何基于EXIF DateTime在Django中为图像分配文件名

时间:2018-07-21 20:17:57

标签: python django

我想从Django中用户上传的图像中读取EXIF信息,然后使用该EXIF信息生成文件名以将图像存储为(在animal_img/alfred-0012目录下),例如:

原始文件名:P1110438.JPG

拍摄日期:2012-07-22

名称:Alfred

目标文件名:alfred-20120722.jpg

不知何故,这种情况一直持续到最近,但是Django一直在抱怨找不到使用[Errno 2] No such file or directory: 'P1110438.JPG'的文件

我在模型中一直使用的用于重命名图像的代码:

def img_namer(instance, filename):
    path = 'animal_img/%s-%04d/' % (instance.name.lower(), instance.id)
    name = instance.name.lower() + Image.open(filename)._getexif()[36867] + ".jpg"

    return os.path.join(path, name)

image = models.ImageField(
    default=None,
    blank=True,
    upload_to=img_namer,

)

我可以看到在正确保存ImageFile之前尝试打开它的局限性,但是就像我说的那样,它一直在起作用,所以也许我做错了什么?任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

我在尝试解决类似问题时发现了您的问题...

通过将Image.open(filename)替换为Image.open(instance.image)对我有用。