首页 > 解决方案 > PIL 的 Image.rotate() 裁剪图像

问题描述

我正在尝试 Python 图像库,但 `Image.rotate() 似乎裁剪了图像:

from PIL import Image 
fn='screen.png'
im = Image.open(fn)
im = im.rotate(-90)
im = im.rotate(90)
im.show()
im.save('cropped.png')

原图screen.png是:

在此处输入图像描述

裁剪后的图像cropped.png是:

在此处输入图像描述

裁剪是由第 1 轮引起的,并在第 2 轮中保留。

尽管多年来我一直在努力熟悉它,但我对 Python 还是很陌生。这是我在 PIL 上做错了什么还是一个错误?

我的 Python 版本是:

Python 3.8.8 (default, Mar  4 2021, 21:24:42) 
[GCC 10.2.0] on cygwin

标签: python-3.xpython-imaging-library

解决方案


感谢pippo1980,解决方案是expand=1在调用时指定rotate()

from PIL import Image 
fn='screen.png'
im = Image.open(fn)
im = im.rotate(-90,expand=1)
im = im.rotate(90,expand=1)
im.show()
im.save('cropped.png')

它调整“外部图像”的宽度和高度,以允许任意旋转的图像适合而无需裁剪。尽管有这个名字,它也会在适当的地方缩小宽度/高度。


推荐阅读