【问题标题】:Python Django how to rotate image and remove black color?Python Django 如何旋转图像并去除黑色?
【发布时间】:2012-08-10 13:24:30
【问题描述】:

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

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

现在我的代码是:

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

【问题讨论】:

标签: python django image


【解决方案1】:

要自动调整大小,您需要expand kwarg:

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

正如the PIL docs 解释:

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

在黑色背景下,保存GIF图片时需要specify the transparent colour

transparency = im.info['transparency'] 
im.save('icon.gif', transparency=transparency)

【讨论】:

  • 感谢@supervacuo 的帮助,我现在可以了。
【解决方案2】:

试试这个:

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

结果如下:

【讨论】:

    【解决方案3】:

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

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

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

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

    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

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2013-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      相关资源
      最近更新 更多