使用枕头旋转图像而不会出现旋转功能错误的程序

Program to rotate an image using pillow without rotate fuction error

我需要编写一个程序,在不使用 python 中的旋转功能的情况下将图像逆时针旋转四分之一圈。 我认为我的程序应该可以运行,图像已创建,但只有黑色图像。 我的代码:

im = Image.open("smiley.bmp")
im.show()
largeur, hauteur= im.size
px = im.load()
def rotation(image):
  largeur, hauteur= image.size
  new = im.copy()
  if largeur >1:
    moitie = largeur//2
    a = im.crop((0, 0, moitie, moitie)) # en haut à gauche
    b = im.crop((moitie,0,hauteur,moitie))# en haut à droite
    c = im.crop((moitie,moitie,hauteur,hauteur)) # en bas à droite 
    d= im.crop((0,moitie,moitie,hauteur))# en bas à gauche
    #récursif
    rotation(a)
    rotation(b)
    rotation(c)
    rotation(d)
    new.paste(d,(0,0)) #d à la place de a 
    new.paste(a,(moitie,0)) #a à la place de b
    new.paste(b,(moitie,moitie))
    new.paste(c,(0,moitie))
  new.save("smiley1.png")

图像将是正方形。

我使用 pycharm 并重新编译 python。

我猜你想用递归算法来解决这个问题,所以我稍微修改了你的代码。

from PIL import Image

im = Image.open("smiley.bmp")
im.show()
largeur, hauteur= im.size
px = im.load()


def my_rotate(image,largeur, hauteur):
  if largeur<2:
    return image
  moitie = largeur//2
  a = image.crop((0, 0, moitie, moitie)) # en haut à gauche 
  b = image.crop((moitie,0,hauteur,moitie))# en haut à droite 
  c = image.crop((moitie,moitie,hauteur,hauteur)) # en bas à droite 
  d = image.crop((0,moitie,moitie,hauteur))# en bas à gauche 

  a = my_rotate(a, moitie, moitie)
  b = my_rotate(b, moitie, moitie)
  c = my_rotate(c, moitie, moitie)
  d = my_rotate(d, moitie, moitie)

  new=image.copy()
  new.paste(d,(0,0)) #d à la place de a 
  new.paste(a,(moitie,0)) #a à la place de b
  new.paste(b,(moitie,moitie))
  new.paste(c,(0,moitie))
  return new


new = im.copy()
new = my_rotate(im, largeur, hauteur)
new.save("smiley1.png")