我还需要图像中的 EXIF 信息,但找不到一个好的解决方案。这就是为什么我为 Django 开发了一个字段,它使用以下命令提取 EXIF 信息exiftool https://www.sno.phy.queensu.ca/~phil/exiftool/并将它们存储在数据库中:Django-Exiffield https://pypi.org/project/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
used JSONField
在内部,您可以使用适当的键访问各个值,例如print(image.exif['Model'])
.
如果您需要按某些 EXIF 值过滤图像或需要经常访问其中的某些值,则有意义非规范化 https://github.com/escaped/django-exiffield#denormalizing-fields他们。该模块提供了一种简单的方法来做到这一点,例如。对相机模型进行非规范化:
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 https://github.com/escaped/django-exiffield/blob/master/README.rst.
如果您有任何问题,请随时提出,如果该模块有任何问题,请在 GitHub 存储库中打开问题!