python - 通过下载图片的文件头,如何获取足够的信息?
问题描述
我每天都需要从图片服务器下载一些图片。该服务器每天添加数千张图片,并且许多图片尺寸很大。由于服务器不支持拇指图片和任何图片描述,我必须完全下载图片才能知道这张图片是否是我需要的。但是,我的网络带宽非常低,因此下载每张图片都需要相当长的时间。而且服务器有严格的网络流量控制,所以如果图片都是大的,我每天可能只能下载不到100张图片。
我搜索了一些相关文章,发现图片的文件头包含许多有用的信息,所以这是我的计划:
- 使用 python 代码下载所有图片的文件头。如果我只下载file-header,网络流量会很小,所以我可以在服务器上下载所有图片的file-header。
- 分析每张图片的文件头并获得足够的信息。通过我的搜索,我知道图片的格式(png/jpg/gif),大小(XXX,XXX字节),分辨率(XXXX×YYY,例如1920x1080)可以从小于1000字节的图片文件头中获得。也许可以从图片的文件头中获取更多信息,所以如果您知道更多,请帮助我。
- 将结果导出到 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字节开始。)我认为这是真的,因为我下载的许多未完成的图片可以显示分辨率和图片顶部。
此外,也许有一种方法可以在不下载完整图片的情况下生成拇指?我不确定这是否可能,但我认为如果可以做到,那将非常有用。
解决方案
您可以使用 PIL 库并使用 getdata。
推荐阅读
- r - 获取字符串中某个单词出现频率的通用函数
- c - 在c中连接两个动态分配的char数组
- selenium - 引起:org.openqa.selenium.InvalidSelectorException:
- r - ggplot 不显示绘图,但我没有收到任何错误消息
- python - 如何返回对函数的递归调用?
- c - 读取结构内的字符时有什么问题吗?
- reactjs - 输入“提供者”
' 不见了 - python - 使用python中的构造函数限制在单例类中创建对象
- javascript - 将一个类传递给两个导航栏
- php - PHP:如何获取非对象的属性(错误消息 - 未定义的属性:stdClass::$0)