問題

他のすべてのフレームをダウンロードせずにGIF画像の最初のフレームを取得する

このスレッドは私が知りたいのとほぼ同じ質問です。 しかし、私の場合、私はPython 3.6とurllibを使用しています。

 import urllib
import requests

img_file = urllib.request.urlopen(img_url, timeout=10)

f = open('/img/' + img_name, 'wb')
f.write(img_file.read())
f.close()
 

私はこのコードを使って画像ファイルを取得しています。しかし、GIFやjpg(jpgファイル拡張子を持つGIF)ファイルを移動するには、ダウンロードに時間がかかりすぎます。

アニメーションの最初のフレームだけをダウンロードする方法はありますか?

  ベストアンサー

私はGIFファイルのバイナリコンテンツを解析する必要があるあなたのために全部を書くつもりはありませんが、人気のある第三者リクエストモジュールを使用してファイルを段階的にダウンロードする例があります(このセクションのドキュメント)。うまくいけば、これはあなたに良いスタートポイントを与えるでしょう。

 import requests

img_url = 'https://upload.wikimedia.org/wikipedia/commons/d/d3/Newtons_cradle_animation_book_2.gif'
#img_filename = 'test.gif'

response = requests.get(img_url, stream=True)
if response.status_code != 200:
    print('Error:', response.status_code)
else:
    header = response.raw.read(6)
    print(header)  # b'GIF89a'

#    # Download whole file in chunks and save locally.
#    with open(img_filename, 'wb') as f:
#        for chunk in response.iter_content(chunk_size=128):
#            f.write(chunk)

print('done')
 

  同じタグがついた質問を見る

pythonpython-3.xrequesturllibgif