Image.rotate 在 PIL/Pillow 2.8.1 和 3.1.1 上的区别

Difference of Image.rotate on PIL/Pillow 2.8.1 and 3.1.1

我在 PIL 上与 Image.rotate() 度过了一段不愉快的时光,直到我决定在终端上检查发生了什么。这就是我所做的:

Python 2、枕头(2.8.1)

from PIL import Image
im = Image.new('RGB', (800, 500))
im.size
out = im.rotate(90)
out.size

输出(如预期):

>> (800, 500)
>> (500, 800)

Python3、枕头(3.1.1)

from PIL import Image
im = Image.new('RGB', (800, 500))
im.size
out = im.rotate(90)
out.size

输出:

>> (800, 500)
>> (800, 500)

而且我认为这是在 Pillow 3X 中调用旋转的正确方法。这是函数的文档:
Image.Rotate()我是不是漏掉了什么?

这是 Pillow<=2.9.0 中的一个错误,已在 3.0.0 中修复。如果您希望图像在旋转时改变大小,您需要包含 expand 参数,例如img.rotate(-90,展开=1)。有关详细信息,请参阅 this issue