從一篇文章中看到,PIL 1.1.5 已經內置了高斯模糊,但是并沒有在文檔中提及,而且PIL的高斯模糊中 radius 是硬編碼, 雖然構造方法中有傳入 radius 參數,但壓根就沒有用到 (看這里),所以需要自己進行改造,當然,知道了原因, 修改起來自然非常簡單了。
結合帖子中的需求,對局部進行高斯模糊,所以還需要結合使用 crop 和 paste 方法實現局部使用濾鏡。
代碼如下:
#-*- coding: utf-8 -*-from PIL import Image, ImageFilterclass MyGaussianBlur(ImageFilter.Filter): name = "GaussianBlur" def __init__(self, radius=2, bounds=None): self.radius = radius self.bounds = bounds def filter(self, image): if self.bounds: clips = image.crop(self.bounds).gaussian_blur(self.radius) image.paste(clips, self.bounds) return image else: return image.gaussian_blur(self.radius)bounds = (150, 130, 280, 230)image = Image.open('source.jpg')image = image.filter(MyGaussianBlur(radius=29, bounds=bounds))image.show()可以看下效果:


新聞熱點
疑難解答
圖片精選