Speeding up Initialization

Fredrik Lundh | Updated April 10, 1997

Importing the Image module is usually a pretty fast operation, but the first time you try to open or save a file (whatever comes first), you may have to wait 1-5 seconds for PIL to pull in all its file format plugins.

If you create simple scripts that only loads a single image, and processes it in some simple fashion, this may account for most of the execution time. However, if you know for sure that you will only handle a few file formats, you can use the following trick to speed things up:

  1. Import the Image module
  2. Explicitly import the plugins you need. For example, to enable GIF support, include GifImagePlugin. You’ll find the available plugins in the Lib directory.
  3. Set the Image._initialized flag to 1.

Example

The following script explicitly imports handlers for GIF, JPEG, and PNG, which are the major file formats used on the World Wide Web.

# Example: enabling only web-related file format handlers

import Image

# import web-related file formats
import GifImagePlugin
import JpegImagePlugin
import PngImagePlugin

# don't look for more plugins
Image._initialized = 1

# open using one the explicitly imported plugins
im = Image.open("python.gif")

Changes in 0.3 and later

Starting with version 0.3, PIL automatically preinstalls handlers for the most common file formats, including BMP, GIF, JPEG, PNG, and PPM. Only if a file cannot be opened by any of these, the rest of the plugins will be loaded. To force loading, call the Image.init function.

 

A Django site. rendered by a django application. hosted by webfaction.