import os
import asposeimagingcloud.models.requests as requests

IMAGE_FILE_NAME= 'example_image.dicom';
IMAGES_FOLDER = 'ExampleImages';
CLOUD_FOLDER = 'CloudImages';
OUTPUT_FOLDER = 'Output';

# Get ClientId and ClientSecret from https://dashboard.aspose.cloud/ 
# or use on-premise version (https://docs.aspose.cloud/imaging/getting-started/how-to-run-docker-container/)
_imaging_api = ImagingApi(client_secret, client_id, 'https://api.aspose.cloud')

def resize_image_from_storage(self):
    """Resizes the image from cloud storage"""
   
    input_image = os.path.join(IMAGES_FOLDER, IMAGE_FILE_NAME)  
    upload_file_request = requests.UploadFileRequest(os.path.join(CLOUD_FOLDER, IMAGE_FILE_NAME), input_image)
    result = self._imaging_api.upload_file(upload_file_request)
    if result.errors:
        print('Uploading errors count: ' + str(len(result.errors)))

    # Please refer to https://docs.aspose.cloud/imaging/supported-file-formats/#resize for possible formats
    format = 'png'  # Resulting image format  
    width = 100
    height = 150
    folder = CLOUD_FOLDER  # Input file is saved at the desired folder in the storage
    storage = None  # We are using default Cloud Storage

    request = requests.ResizeImageRequest(IMAGE_FILE_NAME, width, height, format, folder, storage)
    resized_image = self._imaging_api.resize_image(request)
    
    # Save the image file to output folder
    filename_part, extension = os.path.splitext(IMAGE_FILE_NAME)
    new_file_name = filename_part + '.' + 'png'
    path = os.path.abspath(os.path.join(OUTPUT_FOLDER, new_file_name))
    shutil.copy(resized_image, path) 

def create_resized_image_from_request(self):
    """Resizes an image. Image data is passed in a request stream"""

    # Please refer to https://docs.aspose.cloud/imaging/supported-file-formats/#resize for possible formats
    format = 'png'  # Resulting image format   
    width = 100
    height = 150
    storage = None  # We are using default Cloud Storage
    out_path = None  # Path to updated file (if this is empty, response contains streamed image)  
    input_stream = os.path.join(IMAGES_FOLDER, IMAGE_FILE_NAME)
    
    request = requests.CreateResizedImageRequest(input_stream, width, height, format, out_path, storage)
    resized_image = self._imaging_api.create_resized_image(request)

    # Save the image file to output folder
    filename_part, extension = os.path.splitext(IMAGE_FILE_NAME)
    new_file_name = filename_part + '.' + 'png'
    path = os.path.abspath(os.path.join(OUTPUT_FOLDER, new_file_name))
    shutil.copy(resized_image, path)