Source code for visumorph.scale

import numpy as np
from visumorph import Image
from PIL import Image as PImage


[docs] def scale(image, scale): """Enlarge/Shrink an image with a given scale. This function will scale a VisuMorph image by a given scale with 1.0 as the original scale. The final transformed image would have a dimension of (scale * original_width, scale * original_height), rounded top to the nearest integer. Parameters ---------- image : visumorph.Image The original image to be scaled. scale : float or int The desired scale. The original scale of the image is 1.0. A scale larger than 1.0 will result in a final image having a larger dimension, and vice versa. Cannot be equal or smaller than 0.0. Returns ------- image The VisuMorph Image scaled. Raises ------ TypeError If the image is not a valid VisuMorph Image and/or scale given is not a number. ValueError If the scale provided is equal 0 or is a negative number. Examples -------- >>> import visumorph as vm >>> img = vm.load_image("test.jpg") >>> scaled_img = vm.scale(img, 1.15) """ if not isinstance(image, Image): raise TypeError("The provided image must be a valid VisuMorph Image object.") if not type(scale) in (float, int): raise TypeError("The scale provided must be a number.") if scale <= 0: raise ValueError("The scale provided must be a positive, non-zero number.") img = PImage.fromarray(image.image) new_h, new_w = np.ceil(np.array(image.get_dimensions()[:2]) * scale).astype(int) resized = img.resize((new_w, new_h)) return Image(np.array(resized))