我正在尝试解决图像旋转的问题。我有一些 PNG 图像,其中包含太阳能电池板的照片。它精确地围绕面板进行裁剪。我将此图像放置在卫星地图中,它代表了其相对于比例的准确实际尺寸(例如 1x2 米)。我需要创建一个 Python 函数,它将原始图像旋转指定的角度,并创建一个在面板周围具有透明背景的旋转图像。但问题在于大小......我需要该功能来调整图像大小,以便当我将其重新插入地图时,面板将再次代表其实际大小(1x2m)。这个怎么做?预先感谢您提供任何宝贵的建议或代码示例。
我尝试使用这样的功能,但是插入到地图后尺寸有问题。面板尺寸更小。
def rotate_img(angle):
image_path = '/static/images/panel.png'
rotated_image_path = '/static/images/panel_rotated.png'
original_image = Image.open(image_path).convert("RGBA")
rotation_angle = float(angle)
rotated_image = original_image.rotate(rotation_angle, expand=True,
resample=Image.BICUBIC)
canvas_width = int(rotated_image.width * 1.5)
canvas_height = int(rotated_image.height * 1.5)
canvas = Image.new('RGBA', (canvas_width, canvas_height), (0, 0, 0, 0))
paste_x = (canvas_width - rotated_image.width) // 2
paste_y = (canvas_height - rotated_image.height) // 2
canvas.paste(rotated_image, (paste_x, paste_y), rotated_image)
rotated_image.save(rotated_image_path)
解决方案:
获取旋转前的原始像素尺寸。然后旋转并最终将图像大小调整回原始大小。
width, height = original_image.size
# Then at the end
img_rotated_resized = rotated_image.resize((width, height)