123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- #
- # 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 . 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)
- class AffineTransform(Transform):
- """
- 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.
- See :py:meth:`~PIL.Image.Image.transform`
- :param matrix: A 6-tuple (a, b, c, d, e, f) containing the first two rows
- from an affine transform matrix.
- """
- method = Image.Transform.AFFINE
- class ExtentTransform(Transform):
- """
- 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.
- See :py:meth:`~PIL.Image.Image.transform`
- :param bbox: A 4-tuple (x0, y0, x1, y1) which specifies two points in the
- input image's coordinate system. See :ref:`coordinate-system`.
- """
- method = Image.Transform.EXTENT
- class QuadTransform(Transform):
- """
- Define a quad image transform.
- Maps a quadrilateral (a region defined by four corners) from the image to a
- rectangle of the given size.
- See :py:meth:`~PIL.Image.Image.transform`
- :param xy: An 8-tuple (x0, y0, x1, y1, x2, y2, x3, y3) which contain the
- upper left, lower left, lower right, and upper right corner of the
- source quadrilateral.
- """
- method = Image.Transform.QUAD
- class MeshTransform(Transform):
- """
- Define a mesh image transform. A mesh transform consists of one or more
- individual quad transforms.
- See :py:meth:`~PIL.Image.Image.transform`
- :param data: A list of (bbox, quad) tuples.
- """
- method = Image.Transform.MESH
|