Python Imaging Library

Last updated
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 in Python, C
Type Library for image processing
License Historical Permission Notice and Disclaimer [1]
Website python-pillow.github.io
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 in Python, C
Type Library for image processing
License Historical Permission Notice and Disclaimer [1]
Website python-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, 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]

Contents

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

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

importosfromPILimportImagedefconvert_jpegs_to_pngs(folder_path):# Checks if the provided path is a folderifnotos.path.isdir(folder_path):print(f"Error: {folder_path} is not a valid folder.")return# Iterates over all files in the folderforfilenameinos.listdir(folder_path):# Checks if the file has a .jpg or .jpeg extensioniffilename.lower().endswith(".jpg")orfilename.lower().endswith(".jpeg"):# Full path of the filejpeg_path=os.path.join(folder_path,filename)# Path for the converted filepng_path=os.path.join(folder_path,os.path.splitext(filename)[0]+".png")try:# Opens the JPEG imagewithImage.open(jpeg_path)asimg:# Converts and saves as PNGimg.save(png_path,"PNG")print(f"Converted {jpeg_path} to {png_path}")exceptExceptionase:print(f"Error converting {jpeg_path}: {e}")

References

  1. 1 2 3 4 "Software License". Secret Labs AB. Archived from the original on 20 July 2020. Retrieved December 8, 2013.
  2. 1 2 "Python Imaging Library". Secret Labs AB. Archived from the original on 21 November 2020. Retrieved December 8, 2013.
  3. 1 2 "effbot / pil-2009-raclette". Archived from the original on 15 March 2015. Retrieved December 8, 2013.
  4. "Release Notes". Pillow (PIL Fork) Documentation. Retrieved February 5, 2025.
  5. "Pillow: a modern fork of PIL" . Retrieved December 8, 2013.
  6. "Details of package python-imaging in sid". packages.debian.org. Software in the Public Interest . Retrieved December 8, 2013.
  7. "Details of package python-imaging in raring". ubuntu.com. Canonical Ltd. Retrieved December 8, 2013.
  8. "PyAccess Module". readthedocs.io. Retrieved September 20, 2024.
  9. "ImageFilter Module". readthedocs.io. Retrieved September 20, 2024.
  10. "ImageColor Module". readthedocs.io. Retrieved September 20, 2024.
  11. "D. Writing Your Own File Decoder". Effbot.org. Retrieved 2014-01-28.