使用imageio和boto3写入s3

时间:2017-09-21 11:59:21

标签: python amazon-s3 boto3 python-imageio

我想将图像写入aws s3。作为视频播放我试图通过一些功能处理图像,然后当它完成时我希望将它存储到特定的路径。 imageio直接检查名称中的扩展名,并将图像写入适当的文件格式。

s3 = boto3.resource('s3')
bucket = s3.Bucket(bucket)
obj = bucket.Object(filepath+'/'+second+'.jpg')
img.imwrite(obj)

如果我要将它写入本地位置然后将其写入s3然后它可以工作,但是有更好的方法可以将它存储到s3而无需在本地写入。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

你可以使用python的io包中的BytesIO之类的东西在内存中创建文件对象,并将其传递给boto3客户端,如下所示:

from io import BytesIO

s3 = boto3.resource('s3')
bucket = s3.Bucket(bucket)
in_memory_file = BytesIO()
img.imwrite(in_memory_file)
obj = bucket.Object(filepath+'/'+second+'.jpg')
obj.upload_fileobj(in_memory_file)

这可以解决问题,而无需将文件写入磁盘。