首页 > 解决方案 > 通过下载图片的文件头,如何获取足够的信息?

问题描述

我每天都需要从图片服务器下载一些图片。该服务器每天添加数千张图片,并且许多图片尺寸很大。由于服务器不支持拇指图片和任何图片描述,我必须完全下载图片才能知道这张图片是否是我需要的。但是,我的网络带宽非常低,因此下载每张图片都需要相当长的时间。而且服务器有严格的网络流量控制,所以如果图片都是大的,我每天可能只能下载不到100张图片。
我搜索了一些相关文章,发现图片的文件头包含许多有用的信息,所以这是我的计划:

  1. 使用 python 代码下载所有图片的文件头。如果我只下载file-header,网络流量会很小,所以我可以在服务器上下载所有图片的file-header。
  2. 分析每张图片的文件头并获得足够的信息。通过我的搜索,我知道图片的格式(png/jpg/gif),大小(XXX,XXX字节),分辨率(XXXX×YYY,例如1920x1080)可以从小于1000字节的图片文件头中获得。也许可以从图片的文件头中获取更多信息,所以如果您知道更多,请帮助我。
  3. 将结果导出到 Excel 文件。

你能告诉我实现上述三个需求的有效python代码吗?

7 月 22 日添加:这是我从 HTTP 标头中获得的一些信息

HTTP/1.1 200 OK
Server: nginx
Date: Sun, 22 Jul 2018 15:13:19 GMT
Content-Type: image/jpeg
Content-Length: 376386
Cache-Control: public,max-age=518400
Expires: Sat, 28 Jul 2018 15:13:19 GMT
Last-Modified: Sun, 22 Jul 2018 15:13:19 GMT
Vary: Origin
ETag: "5be42"
Connection: Keep-alive

现在我可以从 HTTP 标头中获取 Content-Type 和 Content-Length。但这对我来说还不够。
搜了一下,有人说可以从图片文件数据的前100字节读取图片的分辨率(XXXX×YYY,比如1920x1080)。(这里100只是最大数,甚至有人说他可以得到分辨率从图片文件数据的30字节开始。)我认为这是真的,因为我下载的许多未完成的图片可以显示分辨率和图片顶部。
此外,也许有一种方法可以在不下载完整图片的情况下生成拇指?我不确定这是否可能,但我认为如果可以做到,那将非常有用。

标签: pythonexcel

解决方案


您可以使用 PIL 库并使用 getdata。


推荐阅读