How to setup Python Imaging Library, Pillow, on Raspbian Stretch Lite for processing images on your Raspberry Pi

When you are building a Raspberry Pi project that deals with images, the Python Imaging Library, Pillow can be very useful. For example, if you connect a camera to your Raspberry Pi 2 or 3 and took a picture, you may want to resize the picture before sending it to a server endpoint.

In case you have trouble setting up Pillow on Raspbian Stretch Lite, this post is for your reference.

Setting up Raspbian Stretch Lite on your Raspberry Pi for running Python 3 applications

It is recommended that you build your Python application with Python 3.

Previously, I had created some guides to setup Raspbian Stretch Lite on Raspberry Pi Zero W and Raspberry Pi 3 for running Python 3 applications:

For the purpose of this guide, we will be basing this guide from one of the above articles.

Installing dependencies for Pillow on Raspbian Stretch Lite

Pillow has a couple of dependencies that we need to install on our Raspbian Stretch Lite. In order to fulfil such dependences, we will run the following commands in a terminal session:

sudo apt-get update
sudo apt-get install libjpeg-dev -y
sudo apt-get install zlib1g-dev -y
sudo apt-get install libfreetype6-dev -y
sudo apt-get install liblcms1-dev -y
sudo apt-get install libopenjp2-7 -y
sudo apt-get install libtiff5 -y

Preparing the virtual environment to run Python 3 application that uses Pillow

After we had installed the dependencies, we can prepare a virtual environment to run Python 3 application that uses Pillow.

To do so, we first run the following command to create the virtual environment for running Python 3 applications:

virtualenv -p python3 PillowEnv

Once virtualenv had created the Python 3 virtual environment for us, we then activate the environment with the following command:

source PillowEnv/bin/activate

As a result of that, the current terminal session will run inside the virtual environment. Therefore, we can run the following command to install Pillow as a Python dependency for the virtual environment:

pip install pillow

When the pip command completes, we can run a Python 3 application that uses Pillow to process images from within the virtual environment.

Testing some capabilities of Pillow

Using the same terminal session, let's test some capabilities of Pillow.

Firstly, run the following command to get a large image into your Raspbian Stretch Lite:

wget -O large-file.jpg https://sites.google.com/site/tcperpetual/bigimage/1280px-LARGE_elevation.jpg

After the command completes, you will find a large-file.jpg in the current working directory. This image is taken from https://commons.wikimedia.org/wiki/File:LARGE_elevation.jpg.

Thereafter, use the nano editor to create a Python script:

nano large-file-analysis.py

Once nano editor loads, copy the following content into the editor:

from PIL import Image
largeFileImage = Image.open('large-file.jpg')
print(largeFileImage.format, largeFileImage.size, largeFileImage.mode)

After you had copied the contents, press 'Ctrl-X' and type 'Y' to save the file.

When you had saved the file, run the Python script with the following command:

python large-file-analysis.py

You should see the following output in your terminal:

JPEG (1280, 640) RGB

With that, you can use the virtual environment to run Python 3 applications for image processing tasks on your Raspberry Pi.


how to setup Python Imaging Library Pillow on Raspbian Stretch Lite for processing images on your Raspberry Pi

About Clivant

Clivant a.k.a Chai Heng enjoys composing software and building systems to serve people. He owns techcoil.com and hopes that whatever he had written and built so far had benefited people. All views expressed belongs to him and are not representative of the company that he works/worked for.