|
@@ -0,0 +1,24 @@
|
|
|
+import boto3
|
|
|
+from PIL import Image
|
|
|
+import numpy as np
|
|
|
+from io import BytesIO
|
|
|
+class S3Util:
|
|
|
+ @classmethod
|
|
|
+ def read_image_from_s3(cls, bucket, key, region_name='ap-southeast-1')->np.ndarray:
|
|
|
+ s3 = boto3.resource('s3', region_name='ap-southeast-1')
|
|
|
+ bucket = s3.Bucket(bucket)
|
|
|
+ object = bucket.Object(key)
|
|
|
+ response = object.get()
|
|
|
+ file_stream = response['Body']
|
|
|
+ im = Image.open(file_stream)
|
|
|
+ return np.array(im)
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def write_image_to_s3(cls, img_array, bucket, key, region_name='ap-southeast-1')->None:
|
|
|
+ s3 = boto3.resource('s3', region_name)
|
|
|
+ bucket = s3.Bucket(bucket)
|
|
|
+ object = bucket.Object(key)
|
|
|
+ file_stream = BytesIO()
|
|
|
+ im = Image.fromarray(img_array)
|
|
|
+ im.save(file_stream, format='jpeg')
|
|
|
+ object.put(Body=file_stream.getvalue())
|