gpt4 book ai didi

python - 是否有另一种方法可以用白色填充旋转图像外部的区域? 'fillcolor' 不适用于旧版本的 Python

转载 作者:行者123 更新时间:2023-12-01 00:48:23 26 4
gpt4 key购买 nike

我想旋转黑白图像。我尝试按如下方式使用旋转功能:

image.rotate(angle, fillcolor=255)

我需要旧版本的 Python 和 Pillow,它们不支持“fillcolor”参数。由于某些限制,我无法升级到新版本,也无法使用任何外部库。

是否有另一种方法可以使用 Pillow 将旋转图像外部的区域填充为白色?

旋转后的图像在旋转部分之外的区域具有黑色。我想用白色填充它。

原文:Original image

旋转:Rotated image

最佳答案

您可以尝试对原始图像进行插值,并通过 Image.composite() 裁剪图像。消除黑条/边框。

from PIL import Image

img = Image.open(r"Image_Path").convert("RGBA")

angle = 30

img = img.rotate(angle)

new_img = Image.new('RGBA', img.size, 'white')

Alpha_Image = Image.composite(img, new_img, img)

Alpha_Image = Alpha_Image.convert(img.mode)

Alpha_Image.show()

上面的代码接收一个图像,将其转换为RGBA模式(此过程需要Alpha),然后将图像旋转30 。之后,它创建一个与原始图像尺寸相同的 RGBA 模式的空 Image 对象,每个像素的每个 channel 的默认值为 255 (即 RGB 为纯白色,Alpha/透明度背景下为完全不透明)。然后使用原始图像的掩模(我们使用第一张图像的透明度掩模)将原始图像插入到这个空图像中。这会产生所需的图像,其中黑条/边缘被白色替换。最后我们将图像颜色空间转换为原始颜色空间。

原始图像:-

enter image description here

旋转 30 度后的图像:-

enter image description here

关于python - 是否有另一种方法可以用白色填充旋转图像外部的区域? 'fillcolor' 不适用于旧版本的 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56765467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com