Every affine transformation is build from 4 ~pillow_affine.transforms.ElementaryTransform
s:
~pillow_affine.transforms.Shear
~pillow_affine.transforms.Rotate
~pillow_affine.transforms.Scale
~pillow_affine.transforms.Translate
To create a more complex transformation these ~pillow_affine.transforms.ElementaryTransform
s can be chained together with a ~pillow_affine.transforms.ComposedTransform
The following examples showcase the functionality of pillow_affine
based on the following image:
Note
The above image can be downloaded here and is cleared for unrestricted usage.
from pillow_affine import Shear
transform1 = Shear(30.0)
transform2 = Shear(30.0, clockwise=True)
transform3 = Shear(30.0, center=(0.0, 0.0))
from pillow_affine import Rotate
transform1 = Rotate(30.0)
transform2 = Rotate(30.0, clockwise=True)
transform3 = Rotate(30.0, center=(0.0, 0.0))
from pillow_affine import Scale
transform1 = Scale(2.0)
transform2 = Scale((0.3, 1.0))
transform3 = Scale(0.5, center=(0.0, 0.0))
from pillow_affine import Translate
transform1 = Translate((100.0, 50.0))
transform2 = Translate((100.0, 50.0), inverse=True)
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))
)
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)