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.