ウェブから画像を取得し、Amazon s3にアップロードしたいと考えています。その間、画像の大きさを確認したいと思います。 は、私は、Python 3に次のコードを持っている:PIL画像オブジェクトをAmazon S3 pythonにアップロード
from PIL import Image
import requests
# Get response
response = requests.get(url, stream= True)
# Open image
im = Image.open(response.raw)
# Get size
size = im.size
# Upload image to s3
S3.Client.upload_fileobj(
im, # This is what i am trying to upload
AWS_BUCKET_NAME,
key,
ExtraArgs={
'ACL': 'public-read'
}
)
問題はPILの画像オブジェクトは読まサポートしていないということです。 PIL Imageオブジェクトim
をアップロードしようとすると、次のエラーが発生します。
ValueError: Fileobj must implement read
「response.raw」をアップロードしようとすると機能しますが、画像のサイズを取得する必要があります。 PILイメージオブジェクトをファイルライクオブジェクトに変更するにはどうすればよいですか?イメージをs3にアップロードできるうちに次元を取得する簡単な方法はありますか?
質問は次のとおりです。イメージのサイズを取得した後、イメージをs3にアップロードするにはどうすればよいですか?
を使用していますこれは何も変わりません。画像がうまく開きます。この問題は、イメージをs3にアップロードするときに発生します。 – john
awsに 'f'をロードしようとしましたか? 'im'の代わりに' f'を使用してください – AndMar
はい、私はそれを試みました。まず第一に、 'response'は' read'という属性を持たず、 'response.raw.read()'を意味すると仮定しています。私は空のfile_objをアップロードしようとすると、 'f'が空になったのでImage.open()でオープンしています。 – john