Python Imaging Library

Library for the Python programming language From Wikipedia, the free encyclopedia

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, Mac OS X and Linux. The latest version of PIL is 1.1.7, was released in September 2009 and supports Python 1.5.2–2.7.[2]

Quick Facts Original author(s), Developer(s) ...
Python Imaging Library
Original author(s)Fredrik Lundh
Developer(s)Secret Labs AB
Initial release1995; 30 years ago (1995)[1]
Stable release
1.1.7 / November 15, 2009; 15 years ago (2009-11-15)[2]
Preview release
1.2a0[3] / 2011; 14 years ago (2011)
Written inPython, C
TypeLibrary for image processing
LicenseHistorical Permission Notice and Disclaimer[1]
Websitepython-pillow.github.io
Close
Quick Facts Original author(s), Initial release ...
Pillow
Original author(s)Jeffrey A. Clark (Alex)
Initial release31 July 2010; 14 years ago (2010-07-31)[1]
Stable release
11.1.0 / January 2, 2025; 34 days ago (2025-01-02)[4]
Written inPython, C
TypeLibrary for image processing
LicenseHistorical Permission Notice and Disclaimer[1]
Websitepython-pillow.github.io
Close

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

Capabilities

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

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

File 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.[11]

Programming 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}")

References

Wikiwand - on

Seamless Wikipedia browsing. On steroids.