PIL:如何让PNG区域透明?

14 投票
2 回答
30064 浏览
提问于 2025-04-16 08:11

我一直在使用PIL这个库来裁剪图片,现在我还想让某些矩形区域变得透明,比如说

from PIL import Image
im = Image.open("sample.png")
transparent_area = (50,80,100,200)
...

2 个回答

4

没有源代码,但这是一个大致的做法,应该能奏效:首先,创建一个“L”(灰度)模式的图像的透明通道,作为一个单独的图像对象。然后,把这个透明通道填充为白色(完全不透明),接着在透明通道的图像上用黑色画一个矩形(完全透明)。接下来,把你想要应用透明效果的图像转换为RGBA格式,并使用图像对象的 putalpha() 方法,把你创建的透明通道复制到这个图像的透明通道中。最后,保存为PNG格式。

35
from PIL import Image
from PIL import ImageDraw
im = Image.open("image.png")
transparent_area = (50,80,100,200)

mask=Image.new('L', im.size, color=255)
draw=ImageDraw.Draw(mask) 
draw.rectangle(transparent_area, fill=0)
im.putalpha(mask)
im.save('/tmp/output.png')

我在这里学会了怎么做这个 链接

撰写回答