將圖像數據從迭代器對象保存到Python中的AWS S3 [英] Save image data from a iterator object to AWS S3 in python
本文介紹了將圖像數據從迭代器對象保存到Python中的AWS S3的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我調用的API返回包含圖像數據的迭代器對象。我想遍歷它們并上傳到S3。我可以在將它們轉儲/上傳到S3之前或之后將它們打開到.png
或.jpeg
。
import boto3
# Download / open photo
img_obj = gmaps.places_photo(ph, max_width = 500, max_height = 400)
print(img_obj)
<generator object Response.iter_content.<locals>.generate at 0x7ffa2dsa7820>
s3 = boto3.client('s3')
with open('output_image_{}.png'.format(c), 'w') as data:
for chunk in img_obj:
s3.upload_fileobj(data,'mybucket','img/{}'.format(chunk))
錯誤:
Input <_io.BufferedWriter name='output_image_1.png'> of type: <class '_io.BufferedWriter'> is not supported.
在本地計算機上,我能夠寫入文件:
with open("output_image_{}.png".format(c), "w") as fp:
for chunk in img_obj:
fp.write(chunk)
我要直接將img_obj
保存在AWS S3上。
推薦答案
可以使用s3fs
以png
格式保存圖像。
我可以使用以下代碼重新創建并實現該示例:
from PIL import Image
import s3fs
s3=s3fs.S3FileSystem(client_kwargs=<aws_credentials>)
img_obj = Image.open('sample_file.png')
img_obj.save(s3.open('s3:///<bucket_name>/sample_file.png', 'wb'), 'PNG')
這篇關于將圖像數據從迭代器對象保存到Python中的AWS S3的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持IT屋!
查看全文