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, 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.[2]
| Python Imaging Library | |
|---|---|
| Original author | Fredrik Lundh |
| Developer | Secret Labs AB |
| Initial release | 1995[1] |
| Stable release | 1.1.7
/ November 15, 2009[2] |
| Preview release | 1.2a0[3]
/ 2011 |
| Written in | Python, C |
| Type | Library for image processing |
| License | Historical Permission Notice and Disclaimer[1] |
| Website | python-pillow |
| Pillow | |
|---|---|
| Original author | Jeffrey A. Clark (Alex) |
| Initial release | 31 July 2010[1] |
| Stable release | 11.1.0
/ January 2, 2025[4] |
| Written in | Python, C |
| Type | Library for image processing |
| License | Historical Permission Notice and Disclaimer[1] |
| Website | python-pillow |
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:
File formats
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}")