Python 下载图片';s文件头,如何获取足够的信息?
我需要每天从图片服务器下载一些图片。该服务器每天添加数千张图片,许多图片的大小都很大。由于服务器不支持拇指图片和任何图片描述,我必须完全下载图片,以了解这张图片是否是我需要的图片。然而,我的网络带宽很低,所以下载每张图片要花费相当长的时间。而且,服务器有严格的网络流量控制,如果图片都很大,我每天只能下载不到100张图片Python 下载图片';s文件头,如何获取足够的信息?,python,excel,Python,Excel,我需要每天从图片服务器下载一些图片。该服务器每天添加数千张图片,许多图片的大小都很大。由于服务器不支持拇指图片和任何图片描述,我必须完全下载图片,以了解这张图片是否是我需要的图片。然而,我的网络带宽很低,所以下载每张图片要花费相当长的时间。而且,服务器有严格的网络流量控制,如果图片都很大,我每天只能下载不到100张图片 我搜索了一些相关文章,发现图片的文件头包含很多有用的信息,所以我的计划是: 使用python代码下载所有图片的文件头。如果我只下载文件头,网络流量将非常小,因此我可以在服务器上下
我搜索了一些相关文章,发现图片的文件头包含很多有用的信息,所以我的计划是:
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头中获取内容类型和内容长度。但这对我来说还不够。我搜索发现有人说他们可以从pic文件数据的前100字节读取图像的分辨率(XXXX×YYY,例如1920x1080)。(这里的100只是最大值,有人甚至说他可以从pic文件数据的前30字节读取分辨率。)我认为这是真的,因为我下载的很多图片都没有完成,可以显示分辨率和图片顶部
此外,也许有一种方法可以在不下载完整图片的情况下生成thumb?我不确定这是否可能,但我认为如果能够做到,它将非常有用。您可以使用PIL库和getdata 我认为这是不可能的,或者根本没有图像头?当我做这样的事情时
curl -I https://upload.wikimedia.org/wikipedia/de/b/bb/Png-logo.png
要获取HTTP头,我看不到图像大小或类似的内容:
HTTP/1.1 200 OK
Date: Sat, 21 Jul 2018 17:35:26 GMT
Content-Type: image/png
Content-Length: 811068
Connection: keep-alive
X-Object-Meta-Sha1Base36: tup6ux1u98mkbw32ta64fna0hqw6y09
Last-Modified: Thu, 03 Oct 2013 23:18:32 GMT
Etag: 1f427f6758058528cc0d474a14ee6dc1
X-Timestamp: 1380842311.64879
X-Trans-Id: txdbd33b3337fb497694bd8-005b536ebb
X-Varnish: 185288243, 96001562 108570149, 528370630
Via: 1.1 varnish (Varnish/5.1), 1.1 varnish (Varnish/5.1), 1.1 varnish (Varnish/5.1)
Accept-Ranges: bytes
Age: 34
X-Cache: cp1062 pass, cp3038 hit/2, cp3039 miss
X-Cache-Status: hit-local
Strict-Transport-Security: max-age=106384710; includeSubDomains; preload
X-Analytics: https=1;nocookies=1
X-Client-IP: 87.152.115.72
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Age, Date, Content-Length, Content-Range, X-Content-Duration, X-Cache, X-Varnish
Timing-Allow-Origin: *
Content-Security-Policy-Report-Only: default-src 'none'; style-src 'unsafe-inline' data:; font-src data:; img-src data: https://upload.wikimedia.org/favicon.ico; media-src data:; sandbox; report-uri https://commons.wikimedia.org/w/api.php?reportonly=1&source=image&action=cspreport&format=json&
X-Content-Security-Policy-Report-Only: default-src 'none'; style-src 'unsafe-inline' data:; font-src data:; img-src data: https://upload.wikimedia.org/favicon.ico; media-src data:; sandbox; report-uri https://commons.wikimedia.org/w/api.php?reportonly=1&source=image&action=cspreport&format=json&
X-Webkit-CSP-Report-Only: default-src 'none'; style-src 'unsafe-inline' data:; font-src data:; img-src data: https://upload.wikimedia.org/favicon.ico; media-src data:; sandbox; report-uri https://commons.wikimedia.org/w/api.php?reportonly=1&source=image&action=cspreport&format=json&
即使存在这样的情况,100的限制也可能会影响图像标题。这不是一个“我们按需编写代码的网站”,但你展示了你所做的事情,人们会提供帮助来纠正它。很抱歉,我过去的描述不准确。图片的文件头包含你在这里给出的HTTP头和pic文件数据的前100字节。您可以从HTTP头获取图片的格式(png/jpg/gif)、大小(XXX,XXX字节)。我搜索并发现一些人说他们可以从pic文件数据的开始部分获得分辨率(XXXX×YYY,例如1920x1080)。我认为这是真的,因为我下载的很多图片都没有完成,可以显示分辨率和图片顶部。也许有一种方法可以在不下载完整图片的情况下生成thumb。嗯,是的。。。你用你的URL尝试了curl-I吗?你有没有提到网站的名字?带有图像大小的标题的名称是什么?100的限制是否仅适用于完全加载的图像?所以,在达到极限后,如果你知道如何编码,或者这是浪费时间的话,你能至少从理论上计算图像大小吗?标题信息已经粘贴在我刚才编辑的主题上,你可以看到新的主题内容。100张图片的限制就是一个例子。我的意思是,如果所有的图像都很大,那么只有不到100个图像。无法计算限制的图像大小,因为我尝试了几次,每次结果都会改变。如果我早上下载的图片不大,我可以下载数百张图片。但是在晚上,网络流量控制非常严格,所以如果图像很大,我只能下载不到100个。好的,从你提到的头,你甚至不能计算图像的大小。请看Ajay Shah的回答。我退出了。我认为图像大小是内容长度。我下载的图像的大小只是内容长度的数量。现在我只需要知道如何从pic文件数据的开始30字节获得分辨率。那么你知道如何只下载pic数据的开始部分,而不是完全下载吗?(如下载begin 50字节)Pil的getdata是否需要下载完整图像?由于严格的网络流量控制,我需要从文件数据的开始部分获得图像的分辨率,这意味着下载不完整,只下载开始部分。