Original author(s) | Fredrik Lundh |
---|---|
Developer(s) | 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 |
Original author(s) | 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 |
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]
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]
PIL offers several standard procedures for image manipulation. These include:
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]
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}")