Pillow (Python Imaging Library – PIL) library

The Pillow library, often referred to as PIL (Python Imaging Library), is a powerful Python library for opening, manipulating, and saving many different image file formats. It provides a wide range of image processing capabilities, making it suitable for tasks such as image enhancement, manipulation, analysis, and generation.

More Information: https://python-pillow.org/


  • Pillow is designed to facilitate image processing and manipulation tasks in Python.
  • It allows users to open, save, and manipulate images in various formats, including JPEG, PNG, GIF, BMP, TIFF, and more.
  • Pillow provides functionalities for basic image processing tasks such as resizing, cropping, rotating, flipping, filtering, and adjusting image properties.

Key Features

  • Image Opening and Saving: Pillow supports opening and saving images in many different file formats. It provides functions like Image.open() for opening images and Image.save() for saving images.
  • Image Manipulation: Pillow allows users to manipulate images in various ways, such as resizing (Image.resize()), cropping (Image.crop()), rotating (Image.rotate()), flipping (Image.transpose()), and pasting (Image.paste()).
  • Image Filtering: Pillow provides functions for applying filters and transformations to images, including blur, sharpen, edge enhancement, and color adjustments.
  • Drawing and Annotation: Pillow allows users to draw shapes, text, and annotations on images using the ImageDraw module. It provides functions for drawing lines, rectangles, ellipses, polygons, and text.
  • Image Analysis: Pillow includes functions for analyzing image properties, such as size, mode, histogram, and metadata.
  • Image Generation: Pillow can be used to generate images programmatically, such as creating blank images (Image.new()), generating gradients, or combining multiple images.

Key Features

  • Pillow is widely used in various domains, including web development, graphic design, scientific computing, computer vision, and digital art.
  • It’s commonly used for tasks such as batch image processing, image resizing for web applications, generating thumbnails, adding watermarks, and creating visualizations.
  • Pillow is often used in conjunction with other Python libraries, such as NumPy for numerical computations, Matplotlib for plotting, and OpenCV for computer vision tasks.


Pillow can be installed using Python package managers like pip or conda. It’s available on PyPI (Python Package Index) and can be installed using the following command.

pip install pillow

Community and Resources

Pillow has an active community of developers and users who contribute to its development and provide support. There are extensive documentation, tutorials, and online resources available for learning and using Pillow, including the official Pillow documentation and community-contributed tutorials and examples.

Overall, Pillow is a versatile and powerful library for image processing and manipulation in Python. Its rich set of features, ease of use, and extensive documentation make it a popular choice for developers working with images in Python.

  • Powerful library for image processing and manipulation.
  • Supports opening, saving, and manipulating images in various formats.
  • Provides a wide range of image processing capabilities, including filtering, resizing, and drawing.
  • Suitable for web development, digital art, computer vision, and scientific computing.
  • Focuses solely on image processing and manipulation, lacking capabilities for graphics, sound, or game development.
  • May have a steeper learning curve for users not familiar with image processing concepts.
  • Requires additional libraries or tools for tasks like real-time image processing or computer vision.

Code Example

from PIL import Image, ImageDraw

# Example: Drawing a simple shape on an image using Pillow
image = Image.new("RGB", (200, 200), "white")
draw = ImageDraw.Draw(image)
draw.rectangle([50, 50, 150, 150], outline="black", width=2)
Code Explanation

This code snippet demonstrates how to draw a simple shape (a rectangle) on an image using the Pillow library in Python. Let’s break it down step by step:

  1. from PIL import Image, ImageDraw: This line imports the necessary classes from the Pillow library. Image is used to create and manipulate images, while ImageDraw provides methods for drawing on images.
  2. image = Image.new("RGB", (200, 200), "white"): Creates a new RGB image with dimensions of 200 pixels in width and 200 pixels in height. The image is initially filled with the color white.
  3. draw = ImageDraw.Draw(image): Creates an ImageDraw object associated with the image created in the previous step. This object provides methods for drawing shapes and text on the image.
  4. draw.rectangle([50, 50, 150, 150], outline="black", width=2): Draws a rectangle on the image. The rectangle is defined by its top-left corner coordinates (50, 50) and bottom-right corner coordinates (150, 150). The outline parameter sets the color of the rectangle’s outline to black, and the width parameter specifies the width of the outline as 2 pixels.
  5. image.show(): Displays the image with the drawn rectangle in a separate window using the default image viewer associated with the operating system.

In summary, this code creates a new image with a white background, draws a black-outlined rectangle on it, and then displays the image with the drawn rectangle in a window using the default image viewer.


The output of the above code example will be a window displaying a white square with a black-outlined rectangle drawn inside it. The rectangle will be positioned with its top-left corner at coordinates (50, 50) and its bottom-right corner at coordinates (150, 150). The outline of the rectangle will be black, and it will have a width of 2 pixels. The image will be displayed using the default image viewer associated with the operating system.