我正在尝试使用 png 黑色/透明 mask 来 mask jpg 图像,但由于锯齿和边框模糊,我总是在输出中输出原始 jpg 的轮廓线。
由于任务不需要图形精度,因此可以通过将 mask 区域增加几个像素来轻松解决这个问题。
例如,如果 mask 区域允许以 100 像素为中心的圆,只需将圆“扩展”一些像素即可解决问题。
有没有办法用 Pillow 来实现这一点?
最佳答案
我找到了解决办法;我把它写下来,以便其他人在需要时可以受益:
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)
关于python - 使用 Python Pillow(或 PIL)增加 JPG 上的 PNG mask 区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36968571/