Skip to Content
ModulesPillow TutorialImage Manipulations

Image Manipulation with Pillow

Pillow provides powerful tools to manipulate images effortlessly. This section covers essential image manipulation techniques, including resizing, cropping, rotating, flipping, and applying transformations.


Resizing Images

The resize() method allows you to resize an image to a specific width and height.

Example: Resizing an Image

from PIL import Image # Open an image img = Image.open("example.jpg") # Resize the image to 200x300 pixels resized_img = img.resize((200, 300)) resized_img.show() # Save the resized image resized_img.save("resized_example.jpg")

Maintaining Aspect Ratio

To resize while maintaining the original aspect ratio, use the thumbnail() method:

# Resize with aspect ratio img.thumbnail((200, 200)) img.show()

Cropping Images

Use the crop() method to extract a portion of the image.

Example: Cropping an Image

# Define the cropping area (left, upper, right, lower) crop_area = (50, 50, 200, 200) cropped_img = img.crop(crop_area) cropped_img.show() # Save the cropped image cropped_img.save("cropped_example.jpg")

Rotating and Flipping Images

Rotating Images

The rotate() method rotates the image by a specified angle.

# Rotate the image by 90 degrees rotated_img = img.rotate(90) rotated_img.show() # Save the rotated image rotated_img.save("rotated_example.jpg")

Flipping Images

  • Horizontal Flip: Use the Image.FLIP_LEFT_RIGHT constant.
  • Vertical Flip: Use the Image.FLIP_TOP_BOTTOM constant.
# Flip the image horizontally flipped_img = img.transpose(Image.FLIP_LEFT_RIGHT) flipped_img.show() # Flip the image vertically flipped_img_v = img.transpose(Image.FLIP_TOP_BOTTOM) flipped_img_v.show()

Applying Transformations

Pillow supports several transformation methods to manipulate images further.

Example: Transposing an Image

The transpose() method applies transformations like rotations and mirroring.

# Transpose the image (e.g., 90-degree rotation) transposed_img = img.transpose(Image.ROTATE_90) transposed_img.show()

Try It Yourself

Problem 1: Resize and Save an Image

Write a script to resize sample.jpg to 300x300 pixels and save it as sample_resized.jpg.

Show Solution

from PIL import Image img = Image.open("sample.jpg") resized_img = img.resize((300, 300)) resized_img.save("sample_resized.jpg") resized_img.show()

Problem 2: Crop a Face from an Image

Write a script to crop the face region from an image named group.jpg and save it as face.jpg.

Show Solution

img = Image.open("group.jpg") crop_area = (100, 50, 300, 250) # Define coordinates face_img = img.crop(crop_area) face_img.save("face.jpg") face_img.show()

With these techniques, you can manipulate images creatively and prepare them for further processing. Stay tuned for more advanced image handling operations in the upcoming sections!

Last updated on