将图像数据从迭代器对象保存到Python中的AWS S3
- 作者: 持八尺剑立不世功
- 来源: 51数据库
- 2022-10-19
问题描述
我调用的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')
推荐阅读
热点文章
Discord.py(重写)on_member_update 无法正常工作
0
Discord.py 在 vc 中获取用户分钟数
0
discord.py 重写 |为我的命令出错
0
Discord.py rewrite 如何 DM 命令?
0
播放音频时,最后一部分被切断.如何解决这个问题?(discord.py)
0
在消息删除消息 Discord.py
0
如何使 discord.py 机器人私人/直接消息不是作者的人?
0
(Discord.py) 如何获取整个嵌入内容?
0
Discord bot 尽管获得了许可,但不能提及所有人
0
Discord.py discord.NotFound 异常
0
