我正在使用PIL.如何将EXIF数据转换为字典?
我正在为python寻找好的exif(可交换图像文件格式)操作库.我更喜欢灵活性(例如,检索提供商专有标签的能力)而不是处理速度.你会建议什么?
我希望使用exiftool扫描我的照片和视频中的EXIF标签.这是一个perl可执行文件.用这个来表达最好的方法是什么?有没有Python库可以做到这一点?或者我应该直接调用可执行文件并解析输出?(后者看起来很脏.)谢谢.
我问的原因是因为我目前正在使用pyexiv2,它不支持视频.Perl的exiftool对图像和视频有非常广泛的支持,我想使用它.
我可以使用R提取必要的信息,但是为了在整个项目中保持一致,我希望能够使用Python(最好是Python3)做到这一点。我需要一个名为“设置”的标签的内容。此标记包含XML,然后需要对其进行解析。
在R中获取元数据非常简单:
library(exifr)
library(XML)
path = file.path('path', 'to', 'file')
x = read_exif(file.path(path,'image.png'))
x$Settings
Run Code Online (Sandbox Code Playgroud)
看起来Python无法做到这一点,这让我很困惑。或这样做需要我比目前拥有更多的Python和PNG知识。如何使用Python提取PNG元数据?
PyPng PyPNG似乎很有希望。检查每个块的长度,似乎“ Settings”标签位于zTXt块中。
import png
filename = "C:\\path\\to\\image.png"
im = png.Reader(filename)
for c in im.chunks():
print(c[0], len(c[1]))
>>>
IHDR 13
tIME 7
pHYs 9
IDAT 47775
zTXt 714
IEND 0
Run Code Online (Sandbox Code Playgroud)
以上摘自这篇文章。但是,仍不清楚如何提取zTXt数据。
hachoir3
使用该hachoir3软件包,我尝试了以下操作:
from hachoir.parser import createParser
from hachoir.metadata import extractMetadata
filename = "C:\\path\\to\\file\\image.png"
parser = createParser(filename)
metadata = extractMetadata(parser)
for line in metadata.exportPlaintext():
print(line)
Run Code Online (Sandbox Code Playgroud)
这给了我以下内容:
Metadata:
- Image width: 1024 …Run Code Online (Sandbox Code Playgroud) 我有一个程序,它返回如下字符串:b'\\xfe\\xff\\x000\\x008\\x00/\\x001\\x002\\x00/\\x001\\x009\\x009\\x003'
如何将其转换为可读字符串。这个的价值应该是08/12/1993
想象我有这样的东西
a = "b'\\xfe\\xff\\x000\\x008\\x00/\\x001\\x002\\x00/\\x001\\x009\\x009\\x003'"
print(a.convert())
Run Code Online (Sandbox Code Playgroud)