我正在尝试旋转图像,但我想保持图像的大小。例如在下面的示例图像中,我想看到一个完整的矩形,并且在旋转后没有黑色背景色。
请帮助我,我将不胜感激。
现在我的代码是:
src_im = Image.open("test.gif")
im = src_im.rotate(30)
im.save("result.gif")
要自动调整大小,您需要expand
kwarg:
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)
您尚未设置新图像的大小 - 如果您仅旋转 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 时指定图像填充颜色
祝你好运!