image - 带有 Pillow 的图像上的羽毛边缘
问题描述
我试图弄清楚如何使用 Pillow 和 Python 来羽化图像的边缘。
我需要像这只可爱的猫这样的东西(忽略可见的边缘):
我试过im.filter(ImageFilter.BLUR)
了,但不是我想要的。
解决方案
看看这个例子:
from PIL import Image
from PIL import ImageFilter
RADIUS = 10
# Open an image
im = Image.open(INPUT_IMAGE_FILENAME)
# Paste image on white background
diam = 2*RADIUS
back = Image.new('RGB', (im.size[0]+diam, im.size[1]+diam), (255,255,255))
back.paste(im, (RADIUS, RADIUS))
# Create blur mask
mask = Image.new('L', (im.size[0]+diam, im.size[1]+diam), 255)
blck = Image.new('L', (im.size[0]-diam, im.size[1]-diam), 0)
mask.paste(blck, (diam, diam))
# Blur image and paste blurred edge according to mask
blur = back.filter(ImageFilter.GaussianBlur(RADIUS/2))
back.paste(blur, mask=mask)
back.save(OUTPUT_IMAGE_FILENAME)
原图(作者 - Irene Mei):
粘贴在白色背景上:
模糊区域(粘贴蒙版):
结果:
推荐阅读
- html - 在另一个 div 中居中多个 div
- database - 重复事件数据库模型
- arrays - 有没有办法对 Swift 数组执行批量更新?
- postgresql - 不能在 postgresql 的函数中使用字符串
- php - Laravel 护照总是说需要用户名和密码,即使提供了有效的凭据
- java - Java 的 Stackify 前缀
- swift - 如何在每行 2 个单元格的集合视图单元格中设置内部间距?
- c# - 是否可以在一个实体中拥有多个具有相同基类 (TPH) 的实体的集合属性?
- vb.net - 无法在 VB.net 中读取 CSV 文件的最后一条记录
- vb.net - 创建、更新、删除中的 DNN DAL2 错误...正常工作