This is an excerpt from The Python Imaging Library Handbook, taken from the chapter The Image Module.

# The Image Module

### transform #

im.transform(size, method, data) ⇒ image

im.transform(size, method, data, filter) ⇒ image

Creates a new image with the given size, and the same mode as the original, and copies data to the new image using the given transform.

In the current version of PIL, the method argument can be EXTENT (cut out a rectangular subregion), AFFINE (affine transform), QUAD (map a quadrilateral to a rectangle), MESH (map a number of source quadrilaterals in one operation), or PERSPECTIVE. The various methods are described below.

The filter argument defines how to filter pixels from the source image. In the current version, it can be NEAREST (use nearest neighbour), BILINEAR (linear interpolation in a 2x2 environment), or BICUBIC (cubic spline interpolation in a 4x4 environment). If omitted, or if the image has mode “1” or “P”, it is set to NEAREST.

im.transform(size, EXTENT, data) ⇒ image

im.transform(size, EXTENT, data, filter) ⇒ image

Extracts a subregion from the image.

Data is a 4-tuple (x0, y0, x1, y1) which specifies two points in the input image’s coordinate system. The resulting image will contain data sampled from between these two points, such that (x0, y0) in the input image will end up at (0,0) in the output image, and (x1, y1) at size.

This method can be used to crop, stretch, shrink, or mirror an arbitrary rectangle in the current image. It is slightly slower than crop, but about as fast as a corresponding resize operation.

im.transform(size, AFFINE, data) ⇒ image

im.transform(size, AFFINE, data, filter) ⇒ image

Applies an affine transform to the image, and places the result in a new image with the given size.

Data is a 6-tuple (a, b, c, d, e, f) which contain the first two rows from an affine transform matrix. For each pixel (x, y) in the output image, the new value is taken from a position (a x + b y + c, d x + e y + f) in the input image, rounded to nearest pixel.

This function can be used to scale, translate, rotate, and shear the original image.

im.transform(size, QUAD, data, filter) ⇒ image

Maps a quadrilateral (a region defined by four corners) from the image to a rectangle with the given size.

Data is an 8-tuple (x0, y0, x1, y1, x2, y2, y3, y3) which contain the upper left, lower left, lower right, and upper right corner of the source quadrilateral.

im.transform(size, MESH, data) image ⇒ image

im.transform(size, MESH, data, filter) image ⇒ image

Similar to QUAD, but data is a list of target rectangles and corresponding source quadrilaterals.

im.transform(size, PERSPECTIVE, data) image ⇒ image

im.transform(size, PERSPECTIVE, data, filter) image ⇒ image

Applies a perspective transform to the image, and places the result in a new image with the given size.

Data is a 8-tuple (a, b, c, d, e, f, g, h) which contains the coefficients for a perspective transform. For each pixel (x, y) in the output image, the new value is taken from a position (a x + b y + c)/(g x + h y + 1), (d x + e y + f)/(g x + h y + 1) in the input image, rounded to nearest pixel.

This function can be used to change the 2D perspective of the original image.

rendered by a django application. hosted by webfaction.