要旋转比屏幕更大的图像,同时避免图像颤动和剪切溢出部分,可以采用以下方法:
from PIL import Image
def rotate_image(image_path, angle):
# 打开图像
img = Image.open(image_path)
# 计算旋转后的边界框
img_width, img_height = img.size
angle_rad = angle * (3.14159 / 180)
new_width = int(abs(img_width * abs(3.14159 / 2 - angle_rad)) + abs(img_height * abs(angle_rad)))
new_height = int(abs(img_height * abs(3.14159 / 2 - angle_rad)) + abs(img_width * abs(angle_rad)))
# 创建新的画布
new_img = Image.new('RGB', (new_width, new_height), (255, 255, 255))
# 旋转图像并粘贴到新画布上
rotated_img = img.rotate(angle, expand=True)
new_img.paste(rotated_img, ((new_width - img_width) // 2, (new_height - img_height) // 2))
# 裁剪和缩放以适应屏幕
screen_width, screen_height = 1920, 1080 # 假设屏幕大小为1920x1080
resized_img = new_img.resize((screen_width, screen_height), Image.ANTIALIAS)
return resized_img
# 示例使用
rotated_image = rotate_image('path_to_your_image.jpg', 45)
rotated_image.show()
通过上述方法,可以有效地旋转比屏幕更大的图像,并避免图像颤动和剪切溢出部分。
领取专属 10元无门槛券
手把手带您无忧上云