如何在Python/Django中获取图像标题
我在想,Facebook和Flicker是怎么在你上传图片时获取图片标题的。
这里有两点需要注意:
- 图片标题(我们通常称之为名称)
- 图片描述标题(你可以查看图片属性,进入详细信息,看到描述标题下的标题,这个是隐含的,不是可见的标题)
当我们把图片上传到Facebook
和Flicker
时,它们会从图片中提取这些信息,并将其设置为标题。
我该如何用Python / Django / PIL来做到这一点呢?
找一张这样的图片作为例子。下载并查看它的属性、详细信息、描述和标题。试着上传到Facebook
和Flicker
,它们会提取这些信息。
编辑
这是我尝试的图片。看,标题字段已经填好了,Facebook正在提取这些信息,但Python代码却没有。当我也添加主题字段时(这是标题下的一个字段),我能够获取到图片描述。这里有两张图片。
第二张图片。
图片链接
注意:
当我在记事本中打开文件时,可以看到描述。
<dc:description> <rdf:Alt> <rdf:li xml:lang="x-default">heeeeeeeeeeeeeeeee</rdf:li> </rdf:Alt> </dc:description>
2 个回答
1
我想把图片标题放到 caja-columns 里,经过这里的帮助,我想出了一个办法。
首先,从这个链接安装 caja-columns.py:https://gist.github.com/infirit/497d589c4dcf44ffe920
然后,编辑代码,改成这样:
from PIL import Image
from PIL import ExifTags
from PIL.ExifTags import TAGS
...
im = Image.open(filename)
exif_data = im._getexif()
exif = {
TAGS[k]: v
for k, v in im._getexif().items()
if k in TAGS
}
file.add_string_attribute('title',exif['ImageDescription']) file.add_string_attribute('pixeldimensions',str(im.size[0])+'x'+str(im.size[1]))
希望这样你能在图片中看到填充好的标题字段。
1
你可以用PIL来实现这个功能:
from PIL import Image
img = Image.open('img.jpg')
exif_data = img._getexif()
(这个方法是我从这个回答中得到的:https://stackoverflow.com/a/4765242/2761986)
编辑:如果想要一个更整洁的字典,可以这样做(这个方法也是从上面的回答借来的):
from PIL.ExifTags import TAGS
exif = {
TAGS[k]: v
for k, v in img._getexif().items()
if k in TAGS
}