boto3_util.py 858 B

123456789101112131415161718192021222324
  1. import boto3
  2. from PIL import Image
  3. import numpy as np
  4. from io import BytesIO
  5. class S3Util:
  6. @classmethod
  7. def read_image_from_s3(cls, bucket, key, region_name='ap-southeast-1')->np.ndarray:
  8. s3 = boto3.resource('s3', region_name='ap-southeast-1')
  9. bucket = s3.Bucket(bucket)
  10. object = bucket.Object(key)
  11. response = object.get()
  12. file_stream = response['Body']
  13. im = Image.open(file_stream)
  14. return np.array(im)
  15. @classmethod
  16. def write_image_to_s3(cls, img_array, bucket, key, region_name='ap-southeast-1')->None:
  17. s3 = boto3.resource('s3', region_name)
  18. bucket = s3.Bucket(bucket)
  19. object = bucket.Object(key)
  20. file_stream = BytesIO()
  21. im = Image.fromarray(img_array)
  22. im.save(file_stream, format='jpeg')
  23. object.put(Body=file_stream.getvalue())