From 0d73721c65d71e968a1a3b07d4252dd99b154772 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Sat, 8 Jun 2024 19:11:51 +1000 Subject: [PATCH] Allow float center for rotate operations --- src/PIL/Image.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/PIL/Image.py b/src/PIL/Image.py index 611d6960da1..1e46c4ee4a4 100644 --- a/src/PIL/Image.py +++ b/src/PIL/Image.py @@ -2305,7 +2305,7 @@ def rotate( angle: float, resample: Resampling = Resampling.NEAREST, expand: int | bool = False, - center: tuple[int, int] | None = None, + center: tuple[float, float] | None = None, translate: tuple[int, int] | None = None, fillcolor: float | tuple[float, ...] | str | None = None, ) -> Image: @@ -2373,10 +2373,7 @@ def rotate( else: post_trans = translate if center is None: - # FIXME These should be rounded to ints? - rotn_center = (w / 2.0, h / 2.0) - else: - rotn_center = center + center = (w / 2, h / 2) angle = -math.radians(angle) matrix = [ @@ -2393,10 +2390,10 @@ def transform(x, y, matrix): return a * x + b * y + c, d * x + e * y + f matrix[2], matrix[5] = transform( - -rotn_center[0] - post_trans[0], -rotn_center[1] - post_trans[1], matrix + -center[0] - post_trans[0], -center[1] - post_trans[1], matrix ) - matrix[2] += rotn_center[0] - matrix[5] += rotn_center[1] + matrix[2] += center[0] + matrix[5] += center[1] if expand: # calculate output size