【问题标题】:Remove Black Bars/Excess from Image rotated with PIL从使用 PIL 旋转的图像中删除黑条/多余部分
【发布时间】:2021-05-19 19:29:25
【问题描述】:

所以最近我在编写 Python 库时遇到了一个小问题,涉及使用 PIL 旋转图像。

我试图通过在图像上调用 Image#rotate(angle, expand=True) 来旋转正在加载的图像会在图像周围产生奇怪的黑条:

image = Image.open('image.png')
image = image.rotate(angle, expand=True)

这显然不适合我们,因为我们希望图像在没有任何添加或多余的情况下旋转。这显然不是我们想要的。

在答案方面,您会发现很多关于在 rotate 方法上设置 fillcolor 参数的建议。

image.rotate(angle, expand=True, fillcolor=(0, 0, 0, 0))

很明显,这看起来可能是一个解决方案,但填充颜色不能是 RGBA,所以我们不能传入 alpha 值。

【问题讨论】:

标签: python image rotation python-imaging-library


【解决方案1】:

对此的正确答案是确保您的图像处于正确的模式。即使您加载支持透明度的图像(例如 .png),您仍然会遇到此错误,除非您将图像模式从其默认值转换为 'RGBA',如下所示:

image = Image.open('image.png').convert('RGBA')

这使得旋转完全没有磨损!

我决定发布这个问题/答案组合,因为我搜索了几个小时才找到这个答案,我想我会让遇到我问题的其他人更容易获得它!

这是我在很久很久以前的旧论坛上找到答案的地方:

    rotate image with transparent background?

【讨论】:

    猜你喜欢
    • 2018-03-24
    • 2023-03-29
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 2012-04-03
    • 2021-10-01
    相关资源
    最近更新 更多