我正在尝试使用png黑色/透明蒙版遮罩jpg图像,但由于锯齿和边框模糊,我总是在输出中有原始jpg的轮廓线。
由于任务不需要图形精度,因此可以通过将遮罩区域增加几个像素来轻松解决这个问题。
因此,例如,如果蒙版区域允许100px的居中圆圈,只需将圆圈“延伸”一些像素,就可以解决问题。
Pillow有没有办法实现这个目标?
答案 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)