2017-03-27 17 views
0

私は、httpを使用して画像ファイルをダウンロードするためにpythonでリクエストライブラリを使用します。 PythonでBytesIOを使用して受信したコンテンツを生のバイトに変換し、この生のコンテンツをjpegファイルとして保存するためにPillow()を使用します。ダウンローダでMIMEタイプを処理する正しい方法

from PIL import Image 
from io import BytesIO 

rsp = requests.get(imageurl) 
content_type_received = rsp.headers['Content-Type'] # mime type 
binarycontent = BytesIO(rsp.content) 
if content_type_received.startswith('image'): # image/jpeg, image/png etc 
    i = Image.open(binarycontent) 
    outfilename = os.path.join(outfolder,'myimg'+'.jpg') 
    with open(outfilename, 'wb') as f: 
     f.write(rsp.content) 
    rsp.close() 

上記のコードでは、MIMEタイプに関係なく、強制的にjpgに変換しています。これは私にとっては内気ではないようです。 PythonやPillowライブラリのmimeサブタイプimage/png、image/gifなどを扱う標準的な方法はありますか?

答えて

0

このライブラリPython Magicは、何をしようとしているのかは完全にはわかりませんが、MIMEタイプを解釈するためにファイルヘッダーを調べることができます。

EDIT: コンテンツタイプを信頼する場合(一般的にはそうしてはいけません)、それを使用してファイルに名前を付けます。 Pythonの魔法を使ってイメージの種類を調べてからそれを使用しないとします。保存したファイルは、これまでの形式では変換されていません。

+0

私はpng、jpegなどである可能性のあるpythonリクエストで受信した画像を保存しようとしています。この方法で変えてはいけないと思います。 – hAcKnRoCk

+0

ネイティブフォーマットで保存しますか? – pypypy

+0

はい。私はソースと同じフォーマットで保存したい – hAcKnRoCk

関連する問題