Go4Expert

Go4Expert (http://www.go4expert.com/)
-   Python (http://www.go4expert.com/articles/python-tutorials/)
-   -   Introduction to Image Operations in Python (http://www.go4expert.com/articles/introduction-image-operations-python-t28566/)

pradeep 11Jun2012 15:58

Introduction to Image Operations in Python
 
Image manipulation is an interesting subject, as well almost inevitable in today's websites, you can use it to render CAPTCHA, crop & resize images, convert between image formats and many more advanced functions. Python with it's growing popularity has encouraged the community & enterprises to come up with modules for image processing in Python, there are many available modules in Python which will help you manipulate images, but in this article we'll be looking into the Python Imaging Library developed by pythonware.com. PIL is able to read a large number of image formats, but it has been restricted to writing out to only the popular formats.

Installing Python Imaging Library



Get the latest stable version of PIL from http://www.pythonware.com/products/pil/. Make sure you have Python development files on your system, in case you installed a Python binary. Untar & run python setup.py install, in case you run into any problem or you would like to customize your installation please refer to the README.

Basic Usage



By basic usage I mean opening an image, identifying the format, creating thumbnail, writing out in a different format than the source, etc. I can explain the functions but that is already done in the PIL documentation, so like always let me help you understand using a demo program with comments at appropriate places.

Code: Python

import Image

## the image being used in the demo is the G4E banner image http://i1.g4estatic.com/bannertm.gif
path_to_image = '/tmp/pradeep/bannertm.gif'

## open the image
img = Image.open(path_to_image)

## print the dimension and image format
print "Format: ",img.format ,"| Dimension: %d x %d" % img.size

## change mode to RGB if not so
if img.mode != "RGB":
    img = img.convert("RGB")

## now let's create a thumbnail (96x96) of the image and save it as JPG

thumb_dimensions = (96,96)
thumb_image_path = '/tmp/pradeep/g4e_thumb.jpg'

## create thumbnail
img.thumbnail(thumb_dimensions)

## save the file in the path specified, if you do not specify the output format
## PIL will try to guess it from the output filename
img.save(thumb_image_path, "JPEG")


Advanced Functions



There are a wide variety of advanced functions available in PIL, but it is out of the scope of this article to cover all the functions, so here we'll be looking into some popular operations like crop, image transform etc. Please follow the code sample below:

Code: Python

import Image

## here let's try using a PNG image
path_to_image = '/tmp/pradeep/roundcube_logo.png'
thumb_image_path = '/tmp/pradeep/roundcube_logo_crop.png'
thumb_dimensions = (96,96)

## open the image
img = Image.open(path_to_image)

## let's specify the crop area, here's the format of specifying crop area co-ordinates
## (left, upper, right, lower)
box = (20, 0, 50, 20)
cropped_img = img.crop(box)

cropped_img.save(thumb_image_path)

## let's rotate the image counter-clockwise
rotated_img = img.rotate(45)

## the above can be done this way too
rotated_img = img.transpose(Image.ROTATE_90)

## we can also flip an image, thereby creating a mirror image
mirror_img = im.transpose(Image.FLIP_LEFT_RIGHT)

## using in-built filters, for better resized images & thumbnails
## this will create the best thumbnail
img.thumbnail(thumb_dimensions,'ANTIALIAS')


The PIL has many sub-modules which offer more extended functionality ImageFont, ImageEnhance, ImageDraw and so on, for a full list and documentation please refer to the PIL documentation.

Scripting 18Jul2012 00:49

Re: Introduction to Image Operations in Python
 
This is really good tut! I haven't found better even on whole internet than this one. Appreciate it.


All times are GMT +5.5. The time now is 13:02.