Мне также требовалась информация EXIF из изображений, и я не мог найти для этого хорошего решения.Вот почему я разработал поле для Django, которое извлекает информацию EXIF с помощью exiftool и сохраняет их в базе данных: 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'),
},
)
Более подробную информацию о модуле вы можете найти в readme .
Если у вас есть какие-либо вопросы, не стесняйтесь спрашивать, и если естьесть какие-либо проблемы с модулем, пожалуйста, откройте проблему в репозитории GitHub!