Image Processing with QccPack and Python
Python, xv and the PIL package are essential for Python image processing programming. Run these commands to build PIL in Linux:
python setup.py build_ext -i python selftest.py
The most important class in the Python Imaging Library is the Image class, defined in the module with the same name. We create instances of this class in several ways: by loading images from files, processing other images or creating images from scratch.
To load an image from a file, use the open function in the Image module:
>>> import Image >>> im = Image. open ("lenna.ppm")
The Python Imaging Library supports a wide variety of image file formats. The library automatically determines the format based on the contents of the file or the extension.
Listing 1. Convert Files to JPEG
import os, sys import Image for infile in sys.argv[1:]: outfile = os.path.splitext(infile) + ".jpg" if infile != outfile: try: Image.open(infile).save(outfile) except IOError: print "cannot convert", infile
The next example (Listing 2) shows how the Image class contains methods to resize and rotate an image.
Listing 2. Simple Geometry Transforms
out = im.resize((128, 128)) out = im.rotate(45) out = im.transpose(Image.ROTATE_90)
The Python Imaging Library allows you to convert images between different pixel representations using the convert function—for example, converting between modes:
im = Image.open("lenna.ppm").convert ("L")
The library supports transformations between each supported mode and the L and RGB modes. To convert between other modes, you may have to use an intermediate image.
The ImageFilter module contains a number of predefined enhancement filters that can be used with the filter method. For example, from the Python prompt, do the following:
>>> import ImageFilter >>> out = im.filter(ImageFilter.DETAIL)
Once you have imported the module, you can use any of these filters:
Some decoders allow you to manipulate an image while reading it from a file. This often can be used to speed up decoding when creating thumbnails and printing to a monochrome laser printer. The draft method manipulates an opened but not yet loaded image so it matches the given mode and size as closely as possible. Reconfiguring the image decoder does this. See Listing 3 for an example of how to read an image in draft mode.
Listing 3. Reading in Draft Mode
im = Image.open (file) print "original =", im.mode, im.size im.draft("L", (100, 100)) print "draft =", im.mode, im.size This prints something like: original = RGB (512, 512) draft = L (128, 128)
Listing 4 shows how the ImageDraw module provides basic graphics support for Image objects.
Getting Started with DevOps - Including New Data on IT Performance from Puppet Labs 2015 State of DevOps Report
August 27, 2015
12:00 PM CDT
DevOps represents a profound change from the way most IT departments have traditionally worked: from siloed teams and high-anxiety releases to everyone collaborating on uneventful and more frequent releases of higher-quality code. It doesn't matter how large or small an organization is, or even whether it's historically slow moving or risk averse — there are ways to adopt DevOps sanely, and get measurable results in just weeks.
Free to Linux Journal readers.Register Now!
- Django Models and Migrations
- Hacking a Safe with Bash
- Secure Server Deployments in Hostile Territory, Part II
- The Controversy Behind Canonical's Intellectual Property Policy
- Huge Package Overhaul for Debian and Ubuntu
- Home Automation with Raspberry Pi
- Shashlik - a Tasty New Android Simulator
- Embed Linux in Monitoring and Control Systems
- KDE Reveals Plasma Mobile
- diff -u: What's New in Kernel Development