Python Django如何旋转图像并删除黑色?

时间:2012-08-10 13:24:31

标签: python django image

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

请帮帮我,我很感激。

现在我的代码是:

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

enter image description here enter image description here

3 个答案:

答案 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)

尝试这个:

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

结果在这里:

test.jpg result.gif