# # 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 class Transform(Image.ImageTransformHandler): def __init__(self, data): self.data = data def getdata(self): return self.method, self.data 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. #
# This function takes 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. # # @def AffineTransform(matrix) # @param matrix A 6-tuple (a, b, c, d, e, f) containing # the first two rows from an affine transform matrix. # @see Image#Image.transform class AffineTransform(Transform): method = Image.AFFINE ## # Define a transform to extract a subregion from an image. #
# 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 (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. # # @def ExtentTransform(bbox) # @param bbox A 4-tuple (x0, y0, x1, y1) which specifies # two points in the input image's coordinate system. # @see Image#Image.transform class ExtentTransform(Transform): method = Image.EXTENT ## # Define an quad image transform. #
# 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 (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. # @see Image#Image.transform 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 class MeshTransform(Transform): method = Image.MESH