
Resizing an image
In order to increase or decrease the size of an image, we can use the resize() function, which internally up-samples or down-samples the image, respectively. This will be discussed in detail in the next chapter.
Resizing to a larger image
Let us start with a small clock image of a size of 149 x 97 and create a larger size image. The following code snippet shows the small clock image we will start with:
im = Image.open("../images/clock.jpg")
print(im.width, im.height)
# 107 105
im.show()
The output of the previous code, the small clock image, is shown as follows:
The next line of code shows how the resize() function can be used to enlarge the previous input clock image (by a factor of 5) to obtain an output image of a size 25 times larger than the input image by using bi-linear interpolation (an up-sampling technique). The details about how this technique works will be described in the next chapter:
im_large = im.resize((im.width*5, im.height*5), Image.BILINEAR) # bi-linear interpolation
Resizing to a smaller image
Now let us do the reverse: start with a large image of the Victoria Memorial Hall (of a size of 720 x 540) and create a smaller-sized image. The next code snippet shows the large image to start with:
im = Image.open("../images/victoria_memorial.png")
print(im.width, im.height)
# 720 540
im.show()
The output of the previous code, the large image of the Victoria Memorial Hall, is shown as follows:

The next line of code shows how the resize() function can be used to shrink the previous image of the Victoria Memorial Hall (by a factor of 5) to resize it to an output image of a size 25 times smaller than the input image by using anti-aliasing (a high-quality down-sampling technique). We will see how it works in the next chapter:
im_small = im.resize((im.width//5, im.height//5), Image.ANTIALIAS)