import json import cv2 import boto3 import numpy as np s3 = boto3.client('s3') def lambda_handler(event, context): bucket = event['bucket'] key = event['key'] try: s3_object = s3.get_object(Bucket=bucket, Key=key) s3_object_byte_array = s3_object['Body'].read() # creating 1D array from bytes data range between[0,255] np_array = np.fromstring(s3_object_byte_array, np.uint8) # decoding array s3_object_imdecode = cv2.imdecode(np_array, cv2.IMREAD_UNCHANGED) resized_image = cv2.resize( s3_object_imdecode, (150, 300), interpolation=cv2.INTER_AREA) # saving image to tmp (writable) directory tmp_file_name = key.replace("raw/", "resized_") print("ResizeMammography.tmp_file_name = "+tmp_file_name) cv2.imwrite("/tmp/"+tmp_file_name, resized_image) # uploading converted image to S3 bucket s3.put_object(Bucket=bucket, Key="resized/"+tmp_file_name, Body=open("/tmp/"+tmp_file_name, "rb").read()) result = { "bucket": bucket, "key": "resized/"+tmp_file_name } return { 'statusCode': 200, 'body': json.dumps(result) } except Exception as e: print(e) raise e