Usage examples

Every affine transformation is build from 4 ElementaryTransform s:

To create a more complex transformation these ElementaryTransform s can be chained together with a ComposedTransform

The following examples showcase the functionality of pillow_affine based on the following image:

girl with painted face - Steve Kelly

Note

The above image can be downloaded here and is cleared for unrestricted usage.

Shear

from pillow_affine import Shear

transform1 = Shear(30.0)
transform2 = Shear(30.0, clockwise=True)
transform3 = Shear(30.0, center=(0.0, 0.0))
Shear(30.0) Shear(30.0, clockwise=True) Shear(30.0, center=(0.0, 0.0))

Rotate

from pillow_affine import Rotate

transform1 = Rotate(30.0)
transform2 = Rotate(30.0, clockwise=True)
transform3 = Rotate(30.0, center=(0.0, 0.0))
Rotate(30.0) Rotate(30.0, clockwise=True) Rotate(30.0, center=(0.0, 0.0))

Scale

from pillow_affine import Scale

transform1 = Scale(2.0)
transform2 = Scale((0.3, 1.0))
transform3 = Scale(0.5, center=(0.0, 0.0))
Scale(2.0) Scale((0.3, 1.0)) Scale(0.5, center=(0.0, 0.0))

Translate

from pillow_affine import Translate

transform1 = Translate((100.0, 50.0))
transform2 = Translate((100.0, 50.0), inverse=True)
Translate((100.0, 50.0)) Translate((100.0, 50.0), inverse=True)

ComposedTransform

from pillow_affine import Shear, Rotate, Scale, Translate, ComposedTransform

transform1 = ComposedTransform(
    Shear(45.0),
    Rotate(30.0),
    Scale(0.7),
)
transform2 = ComposedTransform(
    Scale((0.3, 0.7)),
    Rotate(70.0, clockwise=True),
    Translate((50.0, 20.0))
)
transform1 transform2

expand

from pillow_affine import Shear

transform = Shear(30.0)
transform_params1 = transform.extract_transform_params(size)
transform_params2 = transform.extract_transform_params(size, expand=True)
Shear(30.0) hear(30.0) with expand=True