Skip to content

Commit ba6399c

Browse files
committed
Added PerspectiveTransform
1 parent a786a05 commit ba6399c

3 files changed

Lines changed: 27 additions & 0 deletions

File tree

Tests/test_image_transform.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ def test_sanity(self):
1616

1717
transform = ImageTransform.AffineTransform(seq[:6])
1818
im.transform((100, 100), transform)
19+
transform = ImageTransform.PerspectiveTransform(seq[:8])
20+
im.transform((100, 100), transform)
1921
transform = ImageTransform.ExtentTransform(seq[:4])
2022
im.transform((100, 100), transform)
2123
transform = ImageTransform.QuadTransform(seq[:8])

docs/reference/ImageTransform.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ The :py:mod:`~PIL.ImageTransform` module contains implementations of
1919
:undoc-members:
2020
:show-inheritance:
2121

22+
.. autoclass:: PerspectiveTransform
23+
:members:
24+
:undoc-members:
25+
:show-inheritance:
26+
2227
.. autoclass:: ExtentTransform
2328
:members:
2429
:undoc-members:

src/PIL/ImageTransform.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,26 @@ class AffineTransform(Transform):
6363
method = Image.Transform.AFFINE
6464

6565

66+
class PerspectiveTransform(Transform):
67+
"""
68+
Define a perspective image transform.
69+
70+
This function takes an 8-tuple (a, b, c, d, e, f, g, h). For each pixel
71+
(x, y) in the output image, the new value is taken from a position
72+
((a x + b y + c) / (g x + h y + 1), (d x + e y + f) / (g x + h y + 1)) in
73+
the input image, rounded to nearest pixel.
74+
75+
This function can be used to scale, translate, rotate, and shear the
76+
original image.
77+
78+
See :py:meth:`.Image.transform`
79+
80+
:param matrix: An 8-tuple (a, b, c, d, e, f, g, h).
81+
"""
82+
83+
method = Image.Transform.PERSPECTIVE
84+
85+
6686
class ExtentTransform(Transform):
6787
"""
6888
Define a transform to extract a subregion from an image.

0 commit comments

Comments
 (0)