Added PerspectiveTransform

This commit is contained in:
Andrew Murray 2024-01-07 19:34:27 +11:00
parent a786a0551b
commit ba6399cad1
3 changed files with 27 additions and 0 deletions

View File

@ -16,6 +16,8 @@ class TestImageTransform:
transform = ImageTransform.AffineTransform(seq[:6])
im.transform((100, 100), transform)
transform = ImageTransform.PerspectiveTransform(seq[:8])
im.transform((100, 100), transform)
transform = ImageTransform.ExtentTransform(seq[:4])
im.transform((100, 100), transform)
transform = ImageTransform.QuadTransform(seq[:8])

View File

@ -19,6 +19,11 @@ The :py:mod:`~PIL.ImageTransform` module contains implementations of
:undoc-members:
:show-inheritance:
.. autoclass:: PerspectiveTransform
:members:
:undoc-members:
:show-inheritance:
.. autoclass:: ExtentTransform
:members:
:undoc-members:

View File

@ -63,6 +63,26 @@ class AffineTransform(Transform):
method = Image.Transform.AFFINE
class PerspectiveTransform(Transform):
"""
Define a perspective image transform.
This function takes an 8-tuple (a, b, c, d, e, f, g, h). 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 scale, translate, rotate, and shear the
original image.
See :py:meth:`.Image.transform`
:param matrix: An 8-tuple (a, b, c, d, e, f, g, h).
"""
method = Image.Transform.PERSPECTIVE
class ExtentTransform(Transform):
"""
Define a transform to extract a subregion from an image.