Source code for PIL.ImageTransform

#
# The Python Imaging Library.
# $Id$
#
# transform wrappers
#
# History:
# 2002-04-08 fl   Created
#
# Copyright (c) 2002 by Secret Labs AB
# Copyright (c) 2002 by Fredrik Lundh
#
# See the README file for information on usage and redistribution.
#

from PIL import Image

[docs]class Transform(Image.ImageTransformHandler): def __init__(self, data): self.data = data
[docs] def getdata(self): return self.method, self.data
[docs] def transform(self, size, image, **options): # can be overridden method, data = self.getdata() return image.transform(size, method, data, **options) ## # Define an affine image transform. # <p> # This function takes a 6-tuple (<i>a, b, c, d, e, f</i>) which # contain the first two rows from an affine transform matrix. For # each pixel (<i>x, y</i>) in the output image, the new value is # taken from a position (a <i>x</i> + b <i>y</i> + c, # d <i>x</i> + e <i>y</i> + f) in the input image, rounded to # nearest pixel. # <p> # This function can be used to scale, translate, rotate, and shear the # original image. # # @def AffineTransform(matrix) # @param matrix A 6-tuple (<i>a, b, c, d, e, f</i>) containing # the first two rows from an affine transform matrix. # @see Image#Image.transform
[docs]class AffineTransform(Transform): method = Image.AFFINE ## # Define a transform to extract a subregion from an image. # <p> # Maps a rectangle (defined by two corners) from the image to a # rectangle of the given size. The resulting image will contain # data sampled from between the corners, such that (<i>x0, y0</i>) # in the input image will end up at (0,0) in the output image, # and (<i>x1, y1</i>) at <i>size</i>. # <p> # This method can be used to crop, stretch, shrink, or mirror an # arbitrary rectangle in the current image. It is slightly slower than # <b>crop</b>, but about as fast as a corresponding <b>resize</b> # operation. # # @def ExtentTransform(bbox) # @param bbox A 4-tuple (<i>x0, y0, x1, y1</i>) which specifies # two points in the input image's coordinate system. # @see Image#Image.transform
[docs]class ExtentTransform(Transform): method = Image.EXTENT ## # Define an quad image transform. # <p> # Maps a quadrilateral (a region defined by four corners) from the # image to a rectangle of the given size. # # @def QuadTransform(xy) # @param xy An 8-tuple (<i>x0, y0, x1, y1, x2, y2, y3, y3</i>) which # contain the upper left, lower left, lower right, and upper right # corner of the source quadrilateral. # @see Image#Image.transform
[docs]class QuadTransform(Transform): method = Image.QUAD ## # Define an mesh image transform. A mesh transform consists of one # or more individual quad transforms. # # @def MeshTransform(data) # @param data A list of (bbox, quad) tuples. # @see Image#Image.transform
[docs]class MeshTransform(Transform): method = Image.MESH

Need help?

You can seek realtime assistance via IRC at irc://irc.freenode.net#pil. You can also post to the Image-SIG mailing list. And, of course, there's Stack Overflow.

If you've discovered a bug, you can open an issue on Github.