from io import BytesIO from PIL.PngImagePlugin import PngImageFile from PIL.JpegImagePlugin import JpegImageFile from typing import Union, List ImageLike = Union[PngImageFile, JpegImageFile] def resize_image(image: ImageLike, width: int, height: int) -> bytes: """resize image to the given width and height Args: image (ImageLike): input image to resize of type PngImageFile or JpegImageFile width (int): expected width of the image height (int): expected height of the image Returns: bytes: a new image with the given width and height in PNG format """ image = image.resize((width, height)) bytes_stream = BytesIO() image.save(bytes_stream, format='PNG') return bytes_stream.getvalue() def get_width_height(size: str) -> List: """get width and height of the image from the given size as a string, for example - size = '512x512' Args: size (str): size described as '_width_x_height_' example '512x512' Returns: List: returns a list of interger as [width, height] extracted from the given size """ # size = '512x512' return [int(val) for val in size.split("x")] # [512, 512]