为了账号安全,请及时绑定邮箱和手机立即绑定

从 ImageField Django 2.0 获取 EXIF 数据

从 ImageField Django 2.0 获取 EXIF 数据

明月笑刀无情 2021-07-19 16:05:36
我的任务是提取通过 DJANGO 2.1.2 上传的照片的 exif 数据,这是我的model.py更新模型:class UploadedImage(models.Model):    image = models.ImageField(        "Uploaded image", upload_to=scramble_uploaded_filename, height_field='height', width_field='width')    uploaded_at = models.DateTimeField(default=timezone.now)    width = models.PositiveIntegerField(editable = False)    height = models.PositiveIntegerField(editable = False )     camera = models.CharField(max_length=10, editable = False)    latitud = models.CharField(max_length=20, editable = False)    longitud = models.CharField(max_length=20, editable = False)    meta = ExifField(        source='image',        denormalized_fields={            'camera': exifgetter('Model'),            'latitud': exifgetter('GPSLatitude'),            'longitud': exifgetter('GPSLongitude'),        },    )有关如何使用此模型的一些指导将很乐意提供帮助。
查看完整描述

1 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

我还需要图像中的 EXIF 信息,但找不到好的解决方案。这就是为什么我为 Django 开发了一个字段,它使用exiftool提取 EXIF 信息并将它们存储在数据库中:django-exiffield。


简单安装django-exiffield,确保exiftool已安装并向您的模型添加一个新字段:


from exiffield.fields import ExifField



class UploadedImage(models.Model):

    image = models.ImageField(

        "Uploaded image", upload_to=scramble_uploaded_filename, 

    exif = ExifField(

        source='image',

    )

由于在内部ExifField使用JSONField,您可以使用适当的键访问各个值,例如print(image.exif['Model'])。


如果您需要通过某些 EXIF 值过滤图像或需要经常访问其中的某些值,则对它们进行非规范化是有意义的。该模块提供了一种简单的方法来做到这一点,例如。非规范化相机模型:


from exiffield.fields import ExifField

from exiffield.getters import exifgetter



class UploadedImage(models.Model):

    image = models.ImageField()

    camera = models.CharField(

        editable=False,

        max_length=100,

    )

    exif = ExifField(

        source='image',

        denormalized_fields={

            'camera': exifgetter('Model'),

        },

    )

您可以在其自述文件中找到有关该模块的更多信息。


如果您有任何问题,请随时提出,如果模块有任何问题,请在 GitHub 存储库中打开一个问题!


查看完整回答
反对 回复 2021-07-21
  • 1 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信