我正在尝试旋转图像,但我想保持图像的大小。例如,在下面的示例图像中,我希望看到一个完整的矩形,并且在旋转后没有黑色背景颜色。
请帮帮我,我很感激。
现在我的代码是:
src_im = Image.open("test.gif")
im = src_im.rotate(30)
im.save("result.gif")
答案 0 :(得分:1)
要自动调整大小,您需要expand
kwarg:
src_im = Image.open("test.gif")
im = src_im.rotate(30, expand=True)
im.save("result.gif")
正如the PIL docs解释:
expand参数,如果为true,则表示输出图像应足够大以容纳旋转的图像。如果省略或为false,则输出图像的大小与输入图像的大小相同。
在黑色背景上,保存GIF图像时需要specify the transparent colour:
transparency = im.info['transparency']
im.save('icon.gif', transparency=transparency)
答案 1 :(得分:0)
你没有设置新图像的大小 - 如果你只旋转了30度图像需要扩展......
来自http://effbot.org/imagingbook/image.htm页面:
expand参数,如果为true,则表示输出图像应该 做得足够大以容纳旋转的图像。如果省略或错误, 输出图像与输入图像的大小相同。
所以尝试(这是在浏览器中键入的,因此未经测试):
src_im = Image.open("test.gif")
im = src_im.rotate(30, expand=True)
im.save("result.gif")
对于黑色背景来说有点棘手 - 因为你的旋转时间不是90,所以广场的某个区域需要包含“某些东西”(虽然透明度可能是你想要的)。看看这个答案:Specify image filling color when rotating in python with PIL and setting expand argument to true
古德勒克!
答案 2 :(得分:0)