使用Python Pillow(或PIL)增加JPG上的PNG蒙版区域

时间:2016-05-01 15:44:46

标签: python image-processing python-imaging-library pillow

我正在尝试使用png黑色/透明蒙版遮罩jpg图像,但由于锯齿和边框模糊,我总是在输出中有原始jpg的轮廓线。

由于任务不需要图形精度,因此可以通过将遮罩区域增加几个像素来轻松解决这个问题。

因此,例如,如果蒙版区域允许100px的居中圆圈,只需将圆圈“延伸”一些像素,就可以解决问题。

Pillow有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

我找到了解决方案;我把它写下来,以便其他人可以在需要时受益:

1)对面具应用高斯模糊。这会用阴影“扩展”边界

1b)仅在需要时转换为黑/白色

2)应用基于阈值转换黑色或白色的每个像素的变换。没有其他颜色允许

类似的东西:

blackThreshold = 128.0
img = img.filter(ImageFilter.GaussianBlur(radius=3))
r,g,b,a = img.split() # supposing to have a RGBA PNG
gray = Image.merge('L',(a,)) # 
gray = gray.point(lambda x: 0 if x<blackThreshold else 255)