- Python Pillow Tutorial
- Python Pillow - Home
- Python Pillow - Overview
- Python Pillow - Environment Setup
- Python Pillow - Using Image Module
- Python Pillow - Working with Images
- Python Pillow - Creating Thumbnails
- Python Pillow - Merging Images
- Python Pillow - Blur an Image
- Python Pillow - Cropping an Image
- Python Pillow - Flip and Rotate Images
- Python Pillow - Resizing an Image
- Python Pillow - Creating a Watermark
- Python Pillow - Adding Filters to an Image
- Python Pillow - Colors on an Image
- Python Pillow - ImageDraw Module
- Python Pillow - Image Sequences
- Python Pillow - Writing Text on Image
- Python Pillow - M L with Numpy
- Python Pillow Useful Resources
- Python Pillow - Quick Guide
- Python Pillow - Useful Resources
- Python Pillow - Discussion
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Python Pillow - Working with Images
This chapter elaborates on topics including how to read and save an image in Pillow.
Reading an Image
Reading and writing images using pillow library is very simple, with the help of PIL.Image module function.
fp − A filename (string), pathlib.Path object or a file object. The file object must implement read(), seek() and tell() methods and be opened in binary mode.
mode − It’s an optional argument, if given, must be ‘r’.
Return value − An Image object.
Error − If the file cannot be found, or the image cannot be opened and identified.
Following is a very simple example, where we are going to open an image of any format (We are using .jpg), display it in a window and then save it (default location) with another file format (.png).
from PIL import Image image = Image.open('beach1.jpg') image.show() image.save('beach1.bmp') image1 = Image.open('beach1.bmp') image1.show()
In the above example, we import the Image module from PIL library and then, call the Image.open() function to read an image from disk, which returns an image object data type. It will automatically determine the type of file by looking at the file content. For reading, the open() function accepts a filename(string), a path object or an image(file) object.
So, by using the open() function, we are actually reading the image. Image.open() will read the image and get all the relevant information from the image.
If you save the above program as Example.py and execute, it displays the original (.jpg) and resaved (.bmp) images using standard PNG display utility, as follows −
Resaved image (.bmp)
Saving an Image
The save() function writes an image to file. Like for reading (open() function), the save() function accepts a filename, a path object or a file object that has been opened to write.
Image.save(fp, format=None, **params)
fp − A filename (string), pathlib.Path object or file object.
format − Optional format override. If omitted, the format to use is determined from the filename extension. If a file object was used instead of a filename, this parameter should always to used.
options − Extra parameters to the image writer.
Return value − None
KeyError − If the output format could not be determined from the file name, use the format option to solve this.
IOError − If the file could not be written, the file may have been created, and may contain partial data.
In short, the above syntax will save the image under the given filename. If no format is specified, then it is based on current filename extension. To provide the additional instructions to the writer, we use keyword options.
In the above example, it saves the file based on the file extension to determine the type of image, for example – the above will create a bmp file in our current working directory.
You can also explicitly specify the file type as a second parameter −