Python is gaining more attention and attraction than most other programming languages today. It’s gained that popularity for a variety of reasons. It is both object-oriented and procedural, it’s open-sourced and extensible, it’s portable, and it has library support. Most importantly, however, is that Python is simple to code and very readable.
To illustrate how easy some things are to do in Python, we’ll take a quick look at working with images. We’ll show how to load and display an image using Python, how to get image information using Python, and how to convert image formats using Python.
Of course, to use images in Python, you need to have Python installed. Additionally, you will want to make sure you have the Pillow module installed. Installing the Pillow module can be done using the simple command line directive of:
pip install pillow
This will install an updated version of the Python Image Library (PIL), which will allow you to load and use images. Once you’ve installed Pillow, you are ready to start working with images.
Loading and Displaying an Image in Python
Writing an application to display an image in Python can be done with just a couple of lines of code as shown in Listing 1:
Listing 1: Img.py: Loading an Image in Python
from PIL import Image image = Image.open('image.jpg') image.show()
The code in listing 1 starts by importing the Image library. With the library loaded, you can load an image by call in the Image.open() method and assign the return value to a variable. With the image loaded, you are ready to display the image by calling the show() method on your image variable. If you run Listing 1 in a directory that contains an image named image.jpg, the image will be displayed. The following shows the image being displayed on a Windows system:
Showing Image Properties Using Python
In addition to showing an image, the Image class provides a number of other properties and methods that can be used with images. Some of the key properties include:
filename: The name of the image file
format: The file format such as JPG, GIF
mode: The image mode such as RGB, RFBA, CMYK, or YCbCr
size: The image size in pixels displayed as a width, height tuple
width: The width of the image in pixels
height: The height of the image in pixels
is_animated: Indicates if the image is more than one frame. True if it is, False if it is not. This attribute is not included in all images.
Listing 2 shows how simple it is to load an image called “ani.gif” and display a bunch of its attributes. The image is included in this article just before the code:
Listing 2: Img.py – Displaying Image Attributes Using Python
from PIL import Image image = Image.open('ani.gif') print("Filename: ", image.filename) print("Format: ", image.format) print("Mode: ", image.mode) print("Size: ", image.size) print("Width: ", image.width) print("Height: ", image.height) print("Is Animated: ", (getattr(image, "is_animated", False))) image.close() # close image file
It is worth noting that the ani.gif image is an animated gif, so when this listing is executed, the following information is displayed:
(‘Size: ‘, (500, 500))
(‘Width: ‘, 500)
(‘Height: ‘, 500)
(‘Is Animated: ‘, True)
You can see that the animated gif is 500 by 500 pixels, it is indeed a GIF, and it is animated. In addition to the properties shown in Listing 2, there are two others you can check.
The first of these properties is palette. This is the color palette table if one is included with the image. The value is None if there is not a palette. For the ani.gif shown above, the color palette information that is shown when calling the property is:
<PIL.ImagePalette.ImagePalette object at 0x000000000358CB88>
For the original jpg image used in Listing 1, the palette information was None.
The final property is info. Info is a dictionary object that allows for various non-image information to be shared.
Saving an Image
Opening an image was as simple as calling the open() method. Saving an image in Python is just as simple. You simply call save() and pass in the name you want used to save your image. This method will save the image in the format identified by the extension on the filename you pass in. Listing 3 opens the image.jpg file used in Listing 1 and saves it as a gif file by changing the filename that is passed to save().
Listing 3: Saving a File in Python
from PIL import Image image = Image.open('image.jpg') image.save("NewImage.gif")
The save() method can receive a file object instead of a filename. It also can have two additional parameters passed that specifies the format you want used to save the file. The formats include BMP, DIB, EPS, GIF, ICO, JPEG, PCX, PNG, TIFF, and a multitude of others. The format would be specified as the second parameter as such:
This was a relatively short article because it is relatively easy to work with images in Python! You learned how to open an image in Python. You also saw how to obtain information about the image and how to then save a copy of the image in a different format. In the next article, you’ll see a few ways to manipulate an image once you’ve loaded it. Again, with the use of Python, you’ll find the manipulation comes easy!