將圖像數據從迭代器對象保存到Python中的AWS S3 [英] Save image data from a iterator object to AWS S3 in python

查看:0
本文介紹了將圖像數據從迭代器對象保存到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上。

推薦答案

可以使用s3fspng格式保存圖像。

我可以使用以下代碼重新創建并實現該示例:

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屋!

查看全文
登錄 關閉
掃碼關注1秒登錄
發送“驗證碼”獲取 | 15天全站免登陸
全免费A级毛片免费看无码播放