Python 3.x PIL图像矩形区域的擦除

Python 3.x PIL图像矩形区域的擦除,python-3.x,python-imaging-library,pillow,Python 3.x,Python Imaging Library,Pillow,如何在不改变尺寸的情况下擦除并使PIL图像的矩形区域透明 我通过裁剪图像并粘贴在空图像上实现了这一点,但它无法擦除图像内部的区域。我的实现主要是算术,所以我试图找到一种更优雅的方法来实现这一点。您需要在RGBA模式下打开它 from PIL import Image rect_size = (100, 300) rect_pos = (200, 400) im = Image.open("your-image.jpg").convert("RGBA") rect = Image.new("R

如何在不改变尺寸的情况下擦除并使PIL图像的矩形区域透明


我通过裁剪图像并粘贴在空图像上实现了这一点,但它无法擦除图像内部的区域。我的实现主要是算术,所以我试图找到一种更优雅的方法来实现这一点。

您需要在RGBA模式下打开它

from PIL import Image

rect_size = (100, 300)
rect_pos = (200, 400)

im = Image.open("your-image.jpg").convert("RGBA")
rect = Image.new("RGBA", rect_size, (255, 255, 255, 0))
im.paste(rect, rect_pos)
im.show()

您需要在RGBA模式下打开它

from PIL import Image

rect_size = (100, 300)
rect_pos = (200, 400)

im = Image.open("your-image.jpg").convert("RGBA")
rect = Image.new("RGBA", rect_size, (255, 255, 255, 0))
im.paste(rect, rect_pos)
im.show()

在python抽象级别中迭代每个像素的成本很高:(@nipunasudha如果需要,您可以将它们转换为numpy数组。但是对于正常大小的图像(大概是1920 x 1080),您可能不会注意到差异。在这里,我使用
粘贴()
而不是putpixel对其进行了改进。这肯定会更快。(我在谷歌搜索了一分钟后就知道该怎么做了。)哇哦!这真是太棒了!谢谢@helper,答案被接受了。在python抽象层中迭代每个像素的成本很高:(@nipunasudha,如果你想的话,你可以将它们转换成numpy数组。但是对于正常大小的图像(大概是1920 x 1080)你可能不会注意到差异。在这里,我使用
paste()
而不是putpixel对其进行了改进。这肯定会更快。(我在谷歌搜索了一分钟后就知道了该如何做。)哇哦!这很优雅!谢谢@helper,答案已被接受。