从 ImageField Django 2.0 获取 EXIF 数据

2024-02-07

我正在执行提取通过 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 开发了一个字段,它使用以下命令提取 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 存储库中打开问题!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 ImageField Django 2.0 获取 EXIF 数据 的相关文章

随机推荐

  • Unity 包含的 DLL 大小

    我正在研究 WebGL 项目 并且构建规模非常大 毕竟我在 Web 中建立了优化建议 我研究了构建日志 发现包含的 DLL 占用了构建大小的 85 以上 13 4 MB 空项目上的类似情况 你能帮我减少 DLL 内存吗 很难说你是否已经这样
  • VB.NET Lambda 表达式

    如果我有 Visual Studio 2008 并且我的目标是 NET 2 0 应用程序 我仍然可以使用 Lambda 表达式吗 我对 Lambda 表达式的理解是 它是内置于编译器而不是框架中的功能 因此我的结论是我可以在 NET 2 0
  • 如何查看本地分支和远程分支之间指定文件的差异?

    如何查看本地分支和远程分支指定文件的差异 我知道这个命令 git diff
  • 如何在 django 模板中重复“块”

    我想用同样的 堵塞 在同一个 django 模板中两次 我希望此块在我的基本模板中多次出现 base html h1 block title My Cool Website endblock h1 然后扩展它 blog html exten
  • 实体框架 5:代码优先的循环关系问题

    我明白为什么 EF 不允许 PK FK 关系中的 循环引用 我正在寻求有关如何更改模型以使以下场景发挥作用的建议 Scenario 三个实体 Employee Agency WorkRecord 他们的目的是记录员工工作所花费的时间 Emp
  • Laravel 5 覆盖辅助函数 __() 因为在 WordPress 中使用

    我读过 stackoverflow 上的几篇文章但没有帮助 所以我希望有人能给出好的答案 我正在使用 Laravel 和 wordpress 现在有一个错误 是否可以重命名或其他方法来改变它 Error Fatal error Cannot
  • ASP.NET Server.HtmlEncode 限制

    我正在使用 Server HTMLEncode 来编码我的 HTML 我注意到它不会转义单引号 如果您在 html 中使用单引号 这是一个限制 例如
  • pandas 数据帧上的 s3fs gzip 压缩

    我正在尝试使用以下方法在 S3 上将数据帧写入为 CSV 文件s3fs https github com dask s3fs图书馆和熊猫 尽管有文档 但我担心 gzip 压缩参数不适用于 s3fs def DfTos3Csv df file
  • C++ 模板函数在头文件中编译,但在实现中不编译

    我正在尝试学习模板 但遇到了这个令人困惑的错误 我在头文件中声明了一些函数 并且我想创建一个单独的实现文件来定义这些函数 这是调用标头的代码 dum cpp include
  • 如何为AWS RDS实例设置数据库时区[重复]

    这个问题在这里已经有答案了 我们在 AWS RDS 实例上使用最新的 MySQL 服务器 并配置为在美国东部数据中心运行它 我们假设任何新的 Date 或 Time now 调用都会将日期存储在数据库服务器运行的时区中 有没有办法让我在美国
  • 在缩略图中调整图像 WordPress - woocommerce

    我尝试了很多技巧 用谷歌搜索了很多网站 使用了很多 WordPress 插件 但都失败了并且厌倦了 我正在运行一个优惠券 交易网站 我的问题是我想完全显示产品图像而不进行任何裁剪 即使它的尺寸很小 原始图像是https postimg or
  • 字符出现频率

    我正在尝试使用查找文件中字符的频率Haskell 我希望能够处理大约 500MB 大小的文件 到目前为止我已经尝试过的 它完成了这项工作 但有点慢 因为它解析了文件 256 次 calculateFrequency L ByteString
  • 如何隐藏滚动条并保持内容可滚动? [复制]

    这个问题在这里已经有答案了 我想将我的 html 页面打印到 PDF 文件中 但不希望滚动条显示在 PDF 文件中 我的页面有一个可滚动的主体 所以如果我这样设置 overflow hidden 最终 pdf 文件中的正文将不完整 那么 是
  • 用于匹配多种类型编号列表的正则表达式

    我想创建一个 PCRE 正则表达式来匹配所有常用的编号列表 并且我想分享我的想法并收集有关执行此操作的方法的输入 我将 列表 定义为一组规范的盎格鲁撒克逊约定 即 Numbers 1 2 3 1 2 3 1 2 3 1 2 3 1 1 1
  • UILabel设置透明背景色?

    我希望在我的视图中添加一个带有透明背景的黑色标签 见下文 ADD LABEL UILabel label UILabel alloc init label setFrame CGRectMake 124 312 72 35 label se
  • Intellij idea无法解决maven中的任何问题

    我刚刚导入了一个项目pom xml 但 IDE 没有解决 Maven 依赖项中的任何内容 任何定义在pom xml代码中导入时的依赖项引发错误cannot resolve symbol xxxxx But mvn install会起作用 我
  • vim - 在“替换”表达式中调用函数

    我知道你可以在 vim 搜索 替换操作中调用函数 例如 s regex localtime g 将用当前纪元时间替换任何匹配 正则表达式 的内容 问题是 我无法在 替换 表达式中添加任何其他内容 例如 s regex epoch local
  • 是否可以在华为设备上实现Firebase动态链接?

    我创建了使用动态链接的android应用程序 FirebaseApp initializeApp context Firebase dynamicLinks getDynamicLink intent addOnSuccessListene
  • 用于运行 pytest 的 Azure 自托管代理

    我已经在本地虚拟机上安装了一个自托管代理 它连接到 azure 没有任何问题 我在 azure DevOps 上有一个 python 代码 我已将所有requirements txt要求手动安装到本地VM的cmd行中 以便安装在其上的自托管
  • 从 ImageField Django 2.0 获取 EXIF 数据

    我正在执行提取通过 DJANGO 2 1 2 上传的照片的 exif 数据的任务 这是我的 model py 更新型号 class UploadedImage models Model image models ImageField Upl