使用枕头旋转图像而不会出现旋转功能错误的程序
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")
我需要编写一个程序,在不使用 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")