2017-09-21 48 views
0

我想將圖像寫入aws s3。作爲視頻播放,我試圖通過某些功能處理圖像,然後在完成後我希望將其存儲到特定路徑。 imageio直接檢查名稱中的擴展名並將圖像寫入相應的文件格式。使用imageio和boto3寫入s3

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

如果我寫這一個本地位置然後把它寫入到S3,然後它的工作原理,但有沒有更好的辦法,我可以保存它,而無需在本地寫入S3。

任何幫助表示讚賞。

回答

1

您可以使用類似BytesIO從Python的IO包,在內存中創建的文件對象,並傳遞給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) 

這應該解決的問題,而不必將文件寫入磁盤。