- Trending Categories
- Data Structure
- Operating System
- C Programming
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Working with Images in Python?
One of the most popular and considered as default library of python for image processing is Pillow. Pillow is an updated version of the Python Image Library or PIL and supports a range of simple and advanced image manipulation functionality. It is also the basis for simple image support in other Python libraries such as sciPy and Matplotlib.
Before we start, we need python and pillow. Incase of Linux, pillow will probably be there already, since major flavour of linux including Fedora, Debian/Ubuntu and ArchLinux includes Pillow in packages that previously contained PIL.
The easiest way to install it is to use pip:
pip install pillow
How to load and display images
First we need a test image to demonstrate some important features of using the python Pillow library.
I’ve used the statue_of_unity photo as a sample image. Download the image and save it in your current working directory.
#Load and show an image with Pillow from PIL import Image #Load the image img = Image.open('statue_of_unity.jpg') #Get basic details about the image print(img.format) print(img.mode) print(img.size) #show the image img.show()
JPEG RGB (400, 260)
Above the image is loaded directely using the open() function on Image class. This returns an image object that contains the pixel data for the image as well as details about the image.
The format property on the image will report the image format(e.g png, jpeg), the mode will report the pixel channel format (e.g. CMYK or RGB) and the size will report the dimensions of the image in pixels (e.g. 400*260)
The show() function will display the image using operating systems default application.
Convert an image to grayscale
To convert an image to grayscale, display it and then save it is very easy, just do the following:
#Import required library from PIL import Image #Read an image & convert it to gray-scale image = Image.open('statue_of_unity.jpg').convert('L') #Display image image.show() #Save image image.save('statue_of_unity_gs.jpg')
After running above program, a file “statue_of_unity_gs.jpg” is created in your current working directory.
Convert to another image type
Converting an image of one type (jpeg) to another(say, png) is also very easy.
from PIL import Image image = Image.open('statue_of_unity.jpg') image.save('statue_of_unity.png')
A new image file is created and save in our default directory.
Resize an image
The size(dimensions) of our current image file is 400 * 260px. Incase we want to resize it, and make it of size 440 * 600px, can be done by:
from PIL import Image
image = Image.open('statue_of_unity.jpg') newImage = image.resize((440, 600)) newImage.save('statue_of_unity_440&600.jpg')
A new file ‘statue_of_unit_440*600.jpg’ of size 440 *600px is created and save in your current working directory.
As you can see, this enlarges our original image into desired dimensions rather than cropping it, which you may not want.
Incase you want to crop the existing image, you can do it using,
Rotate an image
Below program loads an image, rotates it 45 degrees and display it using an external viewer.
from PIL import Image image = Image.open('statue_of_unity.jpg') image.rotate(45).show()
Below program will create 128*128 thumbnails of all jpeg images in your current working directory.
from PIL import Image import glob, os size = 128, 128 for infile in glob.glob("*.jpg"): file, ext = os.path.splitext(infile) image = Image.open(infile) image.thumbnail(size, Image.ANTIALIAS) image.save(file + ".thumbnail", "JPEG")
Will return the thumbnails of all jpeg file in my current directory(c:\python\python361) including the ‘statue_of_unity.jpg’ image.
- Python - Working with PNG Images using Matplotlib
- Python - Display images with PyGame
- Python - Working with .docx module
- Working with zip files in Python
- Working with PDF files in Python?
- Python - Working with buttons in Kivy
- How to work with images in Bokeh (Python)?
- Working with Dates and Times in Python
- Working with csv files in Python Programming
- Python - Working with Pandas and XlsxWriter
- Stegosploit: Hacking with Images
- Reading images using Python?
- Resizing images with ImageTk.PhotoImage with Tkinter
- Responsive Images in Bootstrap with Examples
- Working with DateTime in C#