代码之家  ›  专栏  ›  技术社区  ›  Crickets

如何用python pil模糊图像的非矩形或圆形区域?

  •  3
  • Crickets  · 技术社区  · 6 年前

    使用python中的pil,我将一个png图像叠加到另一个更大的图像上。较小的图像是半透明的。

    我希望小图像后面的区域在大图像上模糊。下面的代码模糊了一个矩形区域:

    box=(3270,1150,4030,2250)(x1,y1,x2,y2)
    ic=输出图像。裁剪(框)
    ic=ic.过滤器(imagefilter.boxblur(20))。
    输出图像粘贴(IC,Box)
    

    但是,我需要模糊一个有圆角的矩形区域。

    这就是叠加图像的样子:

    那么,是否可以为PIL中的裁剪区域定义自定义形状?

    如果没有,是否可以至少修剪圆形区域?(为了完全覆盖并且没有任何悬垂,我的区域必须分成6个子区域:4个圆和2个矩形。这样做会减慢我的代码速度,但我会采取我能得到的任何解决方案。)

    我了解这可以用numpy完成,但我更喜欢使用pil,因为此脚本中的所有其他内容都已经用pil编码。

    我希望小图像后面的区域在大图像上模糊。以下代码模糊矩形区域:

    box = (3270, 1150, 4030, 2250)      # (x1, y1, x2, y2)
    ic = outputImage.crop(box)
    ic = ic.filter(ImageFilter.BoxBlur(20))
    outputImage.paste(ic, box)
    

    但是,我需要模糊一个矩形区域有圆角的.

    这就是叠加图像的样子:

    那么,是否可以为PIL中的裁剪区域定义自定义形状?

    如果没有,是否可以至少修剪圆形区域?(为了完全覆盖并且没有任何悬垂,我的区域必须分成6个子区域:4个圆和2个矩形。这样做会减慢我的代码速度,但我会采取我能得到的任何解决方案。)

    我明白this can be done with Numpy但是我更喜欢使用pil,因为这个脚本中的所有内容都已经用pil编码了。