5

我正在尝试旋转图像,但我想保持图像的大小。例如在下面的示例图像中,我想看到一个完整的矩形,并且在旋转后没有黑色背景色。

请帮助我,我将不胜感激。

现在我的代码是:

src_im = Image.open("test.gif")
im = src_im.rotate(30)
im.save("result.gif")

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

4

3 回答 3

2

要自动调整大小,您需要expandkwarg:

src_im = Image.open("test.gif")
im = src_im.rotate(30, expand=True)
im.save("result.gif")

正如PIL 文档所解释的:

expand 参数,如果为真,表示输出图像应该足够大以容纳旋转的图像。如果省略或为 false,则输出图像与输入图像具有相同的大小。

在黑色背景上,您需要在保存 GIF 图片时指定透明颜色:

transparency = im.info['transparency'] 
im.save('icon.gif', transparency=transparency)
于 2012-08-10T13:28:23.997 回答
2

试试这个:

src_im = Image.open("test.jpg")
im = src_im.rotate(30,fillcolor='white', expand=True)
im.save("result.gif")

结果来了:

测试.jpg 结果.gif

于 2018-11-05T15:09:19.460 回答
0

您尚未设置新图像的大小 - 如果您仅旋转 30 度,则图像需要扩展...

http://effbot.org/imagingbook/image.htm页面:

expand 参数,如果为真,表示输出图像应该足够大以容纳旋转的图像。如果省略或为 false,则输出图像与输入图像具有相同的大小。

所以尝试(这是在未经测试的浏览器中输入的):

src_im = Image.open("test.gif")
im = src_im.rotate(30, expand=True)
im.save("result.gif")

对于黑色背景,这有点棘手 - 因为您不是旋转 90 度,所以正方形的一个区域需要包含“某些东西”(尽管您可能想要透明)。看看这个答案:使用 PIL 在 python 中旋转并将扩展参数设置为 true 时指定图像填充颜色

祝你好运!

于 2012-08-10T13:28:13.783 回答