如何在保持图像实际尺寸的情况下旋转图像?

问题描述 投票:0回答:1

我正在尝试解决图像旋转的问题。我有一些 PNG 图像,其中包含太阳能电池板的照片。它精确地围绕面板进行裁剪。我将此图像放置在卫星地图中,它代表了其相对于比例的准确实际尺寸(例如 1x2 米)。我需要创建一个 Python 函数,它将原始图像旋转指定的角度,并创建一个在面板周围具有透明背景的旋转图像。但问题在于大小......我需要该功能来调整图像大小,以便当我将其重新插入地图时,面板将再次代表其实际大小(1x2m)。这个怎么做?预先感谢您提供任何宝贵的建议或代码示例。

Here is the original image Here is example of rotated image(but with bad size)

我尝试使用这样的功能,但是插入到地图后尺寸有问题。面板尺寸更小。

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)
javascript python image rotation image-rotation
1个回答
0
投票

解决方案

获取旋转前的原始像素尺寸。然后旋转并最终将图像大小调整回原始大小。

width, height = original_image.size

# Then at the end

img_rotated_resized = rotated_image.resize((width, height)
© www.soinside.com 2019 - 2024. All rights reserved.