私は、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などを扱う標準的な方法はありますか?
私はpng、jpegなどである可能性のあるpythonリクエストで受信した画像を保存しようとしています。この方法で変えてはいけないと思います。 – hAcKnRoCk
ネイティブフォーマットで保存しますか? – pypypy
はい。私はソースと同じフォーマットで保存したい – hAcKnRoCk