如何在Python/Django中获取图像标题

14 浏览
0 Comments

如何在Python/Django中获取图像标题

我想知道在你上传图片的时候,Facebook和Flicker是如何获取图片的标题的。\n有两个需要注意的地方。\n1. 图片标题(我们通常称之为名称)\n2. 图片描述标题(您可以查看图片属性并转到详细信息,然后在描述标题下查看标题,这是隐含且不可见的标题)\n当我们上传图片到Facebook和Flicker时,它们会从图片中提取这些信息,并将其设置为标题。\n我如何使用Python / Django / PIL实现这个功能?\n以这个图片为例。下载并查看其属性、详细信息和标题。尝试在Facebook和Flicker上上传,它们会提取这些信息。\n


\n

编辑

\n这是一个展示我在尝试的图片。请注意标题字段已经填写,Facebook正在提取这些信息,但是Python代码没有提取到。\n当我添加了Subject字段(标题下的一个字段)时,我能够获取到图片描述。\n这里有两张图片。\n\"enter\n

第二张图片。

\n\"enter\n

图片链接

\n图片一(仅有标题)和\n图片二(有标题和Subject)\n

注意:

\n当我用记事本打开文件时,可以看到描述信息...\n heeeeeeeeeeeeeeeee

0
0 Comments

问题原因:作者想要在caja-columns中获取图像标题,但是不知道如何实现。

解决方法:通过安装caja-columns.py插件,并编辑代码,使用PIL库中的函数来获取图像的exif数据,从中提取出图像的标题信息,并赋值给Title字段。

0
0 Comments

如何在Python/Django中获取图像标题?

问题出现的原因:

根据问题描述,最初的解决方法是使用PIL库中的_getexif()函数获取图片的exif数据,然后通过查找exif字典中的Title字段来获取图像标题。然而,经过尝试后发现,在exif中并没有找到Title字段。因此,提问者认为可能需要进一步研究exif数据,或者尝试使用问题中提供的图片来查看标题。

解决方法:

为了获取更干净的字典数据,可以使用PIL库中的TAGS来将exif数据中的字段名转换为易读的字段名,并且只保留存在于TAGS中的字段。代码如下:

from PIL import Image, ExifTags
img = Image.open('img.jpg')
exif = {
    ExifTags.TAGS[k]: v
    for k, v in img._getexif().items()
    if k in ExifTags.TAGS
}

然而,尽管这样做可以获取到更易读的exif字典,但仍然无法找到标题字段。提问者建议重新下载图片并查看属性中的详细信息,以便确认是否存在标题字段。代码如下:

import os
# 获取文件名(不包括扩展名)
title = os.path.splitext(img.filename)[0]

如果是在Django中使用,可以直接通过`request.FILES['my_file'].name`来获取文件名,无需使用PIL库。代码如下:

title = request.FILES['my_file'].name

然而,提问者意外地发现在重新下载图片后确实找到了标题字段。按照之前的做法,通过`exif['ImageDescription']`可以获取到标题字段的值。代码如下:

title = exif['ImageDescription']

通过使用PIL库中的相关函数和Django的文件上传功能,可以获取图像的标题字段。

0