

You can pad an image by using new() and paste() of the Python image processing library Pillow (PIL). #Make the new image half the width and half the height of the original image If you want to resize an image but do not want to change the aspect ratio or trim it, you can adjust the size by adding padding to the top, bottom, left, and right of the image. The program for resizing and saving the resized image is given below − To resize an image, you call the resize() method of pillow’s image class by giving width and height. This tuple consists of width and height of the image as its elements. The Image module from pillow library has an attribute size.
#Pil image resize code
Here's a python script that uses this function to run batch image resizing.Most of the digital image is a two-dimensional plane of pixels and it has a width and height. These few lines of Python code resize an image (fullsizedimage.jpg) using Pillow to a width of 300 pixels, which is set in the variable basewidth and a height. Print('writing to disk'.format(out_f_path)) Img = img.resize((max_px_size, hsize), Image.ANTIALIAS) Hsize = int(float(height_0) * float(wpercent)) Out_f_path = os.path.join(output_folder, out_f_name) Not the prettiest but gets the job done and is easy to understand: def resize(img_path, max_px_size, output_folder): Return img.resize(size_new, resample=Image.LANCZOS)Ī simple method for keeping constrained ratios and passing a max width / height. size (1080, 1080) userImage Image.open (f'./Images/UsersImages/001.png') userImage userImage.resize (size) EDITED LINE userImage. If img_ratio = video_ratio: # image is not tall enough Use userImage userImage.resize (size), because resize () returns a copy of the image, resized it doesn't actively resize the image. Width, height = video_size # these are the MAX dimensions So after I couldn't find an obvious way to do that here (or at some other places), I wrote this function and put it here for the ones to come: from PIL import Imageĭef get_resized_img(img_path, video_size):

The Image.thumbnail method was promising, but I could not make it upscale a smaller image. I was trying to resize some images for a slideshow video and because of that, I wanted not just one max dimension, but a max width and a max height (the size of the video frame).Īnd there was always the possibility of a portrait video. I hope it might be helpful to someone out there! I tried to document it as much as I can, so it is clear. # Enter the name under which you would like to save the new imageĪnd, it is done. # resample filter ->, (default),, etc. #new_width = round(new_height * asp_rat) # uncomment the second line (new_width) and comment the first one (new_height) # NOTE: if you want to adjust the width to the height, instead -> Img = img.resize((new_width, new_height), Image.ANTIALIAS) Img = Image.open(img_path) # puts our image to the buffer of the PIL.Image object You do not need the semicolons ( ), I keep them just to remind myself of syntax of languages I use more often.


In this case, it will adjust the height to match the width of the new image, based on the initial aspect ratio, asp_rat, which is float (!).īut, to adjust the width to the height, instead, you just need to comment one line and uncomment the other in the else loop. I will also add a version of the resize that keeps the aspect ratio fixed.
