0

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

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

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

任何帮助表示赞赏。

4

1 回答 1

3

您可以使用 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)

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

于 2017-09-21T12:22:41.873 回答