微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从使用 PIL 旋转的图像中去除黑条/多余部分

如何解决从使用 PIL 旋转的图像中去除黑条/多余部分

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

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

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

Rotated Image with Black Bars/Excess

这显然对我们来说并不理想,因为我们希望图像旋转时没有任何添加或多余。这显然不是我们想要的。

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

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

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

解决方法

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

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

这样可以让旋转完全无磨损!

enter image description here

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

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

rotate image with transparent background?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。