繁体   English   中英

将图像旋转 90 度

[英]Rotating an Image 90 degrees

def rotate_picture_90_left(img: Image) -> Image:
    """Return a NEW picture that is the given Image img rotated 90 degrees
    to the left.

    Hints:
    - create a new blank image that has reverse width and height
    - reverse the coordinates of each pixel in the original picture, img,
        and put it into the new picture
    """
    img_width, img_height = img.size
    pixels = img.load()  # create the pixel map
    rotated_img = Image.new('RGB', (img_height, img_width))
    pixelz = rotated_img.load()
    for i in range(img_width):
        for j in range(img_height):
            pixelz[i, j] = pixels[i, j]
    return rotated_img

我相信我的代码似乎不起作用,因为我创建了新图像以及反向宽度、长度和反转原始图片中的坐标。 如何修复我的代码以正确旋转图像?

转换坐标时需要考虑以下逻辑:

  • y转向x
  • x转向y但从头到尾移动

这是代码:

from PIL import Image

def rotate_picture_90_left(img: Image) -> Image:
    w, h = img.size
    pixels = img.load()
    img_new = Image.new('RGB', (h, w))
    pixels_new = img_new.load()
    for y in range(h):
        for x in range(w):
            pixels_new[y, w-x-1] = pixels[x, y]
    return img_new

例子:

在此处输入图像描述 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM