Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 下载图片';s文件头,如何获取足够的信息?_Python_Excel - Fatal编程技术网

Python 下载图片';s文件头,如何获取足够的信息?

Python 下载图片';s文件头,如何获取足够的信息?,python,excel,Python,Excel,我需要每天从图片服务器下载一些图片。该服务器每天添加数千张图片,许多图片的大小都很大。由于服务器不支持拇指图片和任何图片描述,我必须完全下载图片,以了解这张图片是否是我需要的图片。然而,我的网络带宽很低,所以下载每张图片要花费相当长的时间。而且,服务器有严格的网络流量控制,如果图片都很大,我每天只能下载不到100张图片 我搜索了一些相关文章,发现图片的文件头包含很多有用的信息,所以我的计划是: 使用python代码下载所有图片的文件头。如果我只下载文件头,网络流量将非常小,因此我可以在服务器上下

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

  • 使用python代码下载所有图片的文件头。如果我只下载文件头,网络流量将非常小,因此我可以在服务器上下载所有图片的文件头
  • 分析每个图片的文件头并获得足够的信息。从我的搜索中,我知道图片的格式(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头中获取内容类型和内容长度。但这对我来说还不够。
    我搜索发现有人说他们可以从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是否需要下载完整图像?由于严格的网络流量控制,我需要从文件数据的开始部分获得图像的分辨率,这意味着下载不完整,只下载开始部分。