Reference articles on history, science, culture and more
Encyclopedia

Python Imaging Library

Library for the Python programming language

Pillow
Original authorJeffrey A. Clark (Alex)
Release31 July 2010 (2010-07-31)
Stable release12.2.0 / April 1, 2026 (2026-04-01)
Written inPython, C
TypeLibrary for image processing
LicenseHistorical Permission Notice and Disclaimer
Websitepython-pillow.github.io

Python Imaging Library is a free and open-source additional library for the Python programming language that adds support for opening, manipulating, and saving many different image file formats. It is available for Windows, macOS and Linux. The latest version of PIL is 1.1.7, was released in September 2009 and supports Python 1.5.2-2.7.

Development of the original project, known as PIL, was discontinued in 2011. Subsequently, a successor project named Pillow forked the PIL repository and added Python 3.x support. This fork has been adopted as a replacement for the original PIL in Linux distributions including Debian and Ubuntu (since 13.04).

01Capabilities

PIL offers several standard procedures for image manipulation. These include:

  • per-pixel manipulations,
  • masking and transparency handling,
  • image filtering, such as blurring, contouring, smoothing, or edge finding,
  • image enhancing, such as sharpening, adjusting brightness, contrast or color,
  • adding text

02File formats

Supported file formats include PPM, PNG, JPEG, GIF, TIFF, and BMP. PIL is extensible, allowing users to create custom decoders for any file format.

03Programming examples

import os from PIL import Image def convert_jpegs_to_pngs(folder_path): # Checks if the provided path is a folder if not os.path.isdir(folder_path): print(f"Error: {folder_path} is not a valid folder.") return # Iterates over all files in the folder for filename in os.listdir(folder_path): # Checks if the file has a .jpg or .jpeg extension if filename.lower().endswith(".jpg") or filename.lower().endswith(".jpeg"): # Full path of the file jpeg_path = os.path.join(folder_path, filename) # Path for the converted file png_path = os.path.join(folder_path, os.path.splitext(filename)[0] + ".png") try: # Opens the JPEG image with Image.open(jpeg_path) as img: # Converts and saves as PNG img.save(png_path, "PNG") print(f"Converted {jpeg_path} to {png_path}") except Exception as e: print(f"Error converting {jpeg_path}: {e}")
Watch videos about Python Imaging LibraryExplainers and documentaries on YouTube (opens in a new tab)

Sources and credits

This article is adapted from the Wikipedia article Python Imaging Library, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.

Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.