无需下载整个图像即可获取EXIF数据 - Python

时间:2012-12-13 14:08:34

标签: python image download client-server exif

是否可以远程获取图像的EXIF信息并仅下载EXIF数据?

根据我对EXIF bytes in image files的理解,EXIF数据位于图像的前几个字节中。

所以问题是如何使用Python只下载远程文件的前几个字节? (编辑:依赖HTTP范围标题不够好,因为并非所有远程主机都支持它,在这种情况下将发生完全下载。)

例如,我可以在x字节进度后取消下载吗?

2 个答案:

答案 0 :(得分:4)

您可以通过设置HTTP range header告诉Web服务器仅向您发送文件的一部分。有关使用urllib部分下载文件的示例,请参阅This answer。所以你可以下载一大块例如1000字节,检查块中是否包含exif数据,如果找不到exif app1标头或exif数据不完整,请下载更多。

答案 1 :(得分:2)

这在很大程度上取决于图像格式。例如,如果您有TIFF文件,则不知道EXIF数据(如果有)在文件中的先验。它可能在标题之后和第一个IFD之前,但这不太可能。它可能是在图像数据之后。可能是在中间的某个地方。

如果您需要EXIF信息,请在服务器上提取该信息(可能是缓存),然后将其打包好,而不是要求客户端代码。