从 ImageField Django 2.0 获取 EXIF 数据
Get EXIF Data from ImageField Django 2.0
我正在执行提取通过 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'),
},
)
关于如何使用此模型的一些指导很乐意提供帮助。
我还需要图像中的 EXIF 信息,但找不到好的解决方案。这就是为什么我为 Django 开发了一个字段,它使用 exiftool and stores them in the database: django-exiffield.
提取 EXIF 信息
简单安装 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 值过滤图像或需要经常访问其中的某些值,denormalize 它们很有意义。该模块提供了一种简单的方法来做到这一点,例如。反规范化相机模型:
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'),
},
)
您可以在 readme.
中找到有关该模块的更多信息
如果您有任何问题,请随时提出,如果模块有任何问题,请在 GitHub 存储库中提出问题!
我正在执行提取通过 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'),
},
)
关于如何使用此模型的一些指导很乐意提供帮助。
我还需要图像中的 EXIF 信息,但找不到好的解决方案。这就是为什么我为 Django 开发了一个字段,它使用 exiftool and stores them in the database: django-exiffield.
提取 EXIF 信息简单安装 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 值过滤图像或需要经常访问其中的某些值,denormalize 它们很有意义。该模块提供了一种简单的方法来做到这一点,例如。反规范化相机模型:
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'),
},
)
您可以在 readme.
中找到有关该模块的更多信息如果您有任何问题,请随时提出,如果模块有任何问题,请在 GitHub 存储库中提出问题!