使用python读取jpeg的EXIF数据

2024-04-25 12:59:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个程序来获取特定的EXIF信息的jpeg而不使用PIL等。我正在读二进制文件,但是输出有点混乱。。。在

file = open("/Users/Niko/Desktop/IMG.JPG", "rb")
print(file.read(16))

哪些输出:

^{pr2}$

我不明白“\”、“/”和“*”是什么意思。。。 我知道表示jpeg的前几个字节是0xFF 0xD8,所以我认为\s是0?有人能帮我理解这个吗?在

对于初学者的任何错误表示歉意,对于一般的代码来说都是新的,并且有点像是在创建这个程序。在


Tags: 文件程序信息imgpil二进制openusers
1条回答
网友
1楼 · 发布于 2024-04-25 12:59:20

Python为您提供了字节字符串的表示形式,您可以再次将其复制并粘贴到Python解释器中。在

为了使其可读性在粘贴到不处理原始字节的内容中生存下来,任何不可打印的内容都将使用Python字节转义代码\xHH进行转义,该代码表示一个字节的六进制值。在

任何可打印的,都直接用ASCII字符表示。十六进制字节0x41是ASCII中的字母A(大写),并按如下方式打印:

>>> b'\x41'
b'A'

因此,*是hex 2A,/是hex 2F:

^{pr2}$

可以使用^{}生成字节的全十六进制表示:

>>> from binascii import hexlify
>>> hexlify(b'\xff\xd8\xff\xe1/\xfeExif\x00\x00MM\x00*\x00\x00\x00\x08\x00\x0b\x01\x0f\x00\x02\x00\x00\x00\x06\x00\x00')
b'ffd8ffe12ffe4578696600004d4d002a00000008000b010f0002000000060000'

也就是说,最好安装Pillow(Python图像库的现代化分支)并让它为您处理JPEG图像,包括extracting EXIF information。在

相关问题 更多 >