从 ImageField Django 2.0 获取 EXIF 数据

我的任务是提取通过 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'),

        },

    )

有关如何使用此模型的一些指导将很乐意提供帮助。


明月笑刀无情
浏览 177回答 1
1回答

幕布斯7119047

我还需要图像中的 EXIF 信息,但找不到好的解决方案。这就是为什么我为 Django 开发了一个字段,它使用exiftool提取 EXIF 信息并将它们存储在数据库中:django-exiffield。简单安装django-exiffield,确保exiftool已安装并向您的模型添加一个新字段:from exiffield.fields import ExifFieldclass 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 ExifFieldfrom exiffield.getters import exifgetterclass UploadedImage(models.Model):    image = models.ImageField()    camera = models.CharField(        editable=False,        max_length=100,    )    exif = ExifField(        source='image',        denormalized_fields={            'camera': exifgetter('Model'),        },    )您可以在其自述文件中找到有关该模块的更多信息。如果您有任何问题,请随时提出,如果模块有任何问题,请在 GitHub 存储库中打开一个问题!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python