Python中使用PIL库实现图片高斯模糊实例_python

一、安装PIL

PIL是Python Imaging Library简称,用于处理图片。PIL中已经有图片高斯模糊处理类,但有个bug(目前最新的1.1.7bug还存在),就是模糊半径写死的是2,不能设置。在源码ImageFilter.py的第160行:

所以,我们在这里自己改一下就OK了。

项目地址:http://www.pythonware.com/products/pil/

二、修改后的代码

代码如下:

复制代码 代码如下:

#-*- coding: utf-8 -*-

from PIL import Image, ImageFilter

class 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)

三、调用

复制代码 代码如下:

simg = 'demo.jpg'
dimg = 'demo_blur.jpg'
image = Image.open(simg)
image = image.filter(MyGaussianBlur(radius=30))
image.save(dimg)
print dimg, 'success'

如果只需要处理某个区域,传入bounds参数即可

四、效果
原图:

处理后的:

时间: 2024-11-05 21:59:43

Python中使用PIL库实现图片高斯模糊实例_python的相关文章

在Python中使用pngquant压缩png图片的教程_python

说到png图片压缩,可能很多人知道TinyPNG这个网站.但PS插件要钱(虽然有破解的),Developer API要连到他服务器去,不提网络传输速度,Key也是有每月限制的.          但是貌似tinyPNG是使用了来自于 pngquant 的技术,至少在 http://pngquant.org/ 中是如此声称的:TinyPNG and Kraken.io - on-line interfaces for pngquant.如果真是这样,我很想对TinyPNG说呵呵.后者是开源的,连首

Python中使用MELIAE分析程序内存占用实例_python

写的dht协议搜索的程序,这几天优化了一下发现速度确实快了好多.但是出现了一个新的问题,内存直接飙升,我开了十个爬虫占用内存800m.开始我以为是节点太多了,找了几个小问题修改一下,发现没用.后来就到网上查找python内存分析的工具,查了一点资料发现python有个meliae库操作非常方便,就使用分析了一下,发现不是节点太多的原因0 0,是保存发送的t_id,用来标示返回的消息是那个发出的一个字典过大了. 从分析的结果非常容易的定位了某个对象的数量和大小,非常容易分析.我开始以为是因为好多发

Python中使用Boolean操作符做真值测试实例_python

在Python中,任何类型的对象都可以做真值测试,并且保证返回True或者False. 以下几种值(不论类型)在真值测试中返回False: 1.None 2.False 3.任何类型的数字0,包括0,0.0,0L,0j 4.空的序列(sequence)或者映射(mapping)类型对象 5.对于用户自定义类型的对象,如果其类定义了__nonzero__() 或者 __len__()特殊方法并且返回False或者0 对于最后一条规则,有几点需要说明: 1.如果类没有定义这两个方法中的任何一个,则这

Python中dictionary items()系列函数的用法实例_python

本文实例讲述了Python中dictionary items()系列函数的用法,对Python程序设计有很好的参考借鉴价值.具体分析如下: 先来看一个示例: import html # available only in Python 3.x def make_elements(name, value, **attrs): keyvals = [' %s="%s"' % item for item in attrs.items()] attr_str = ''.join(keyvals

python中列表元素连接方法join用法实例_python

本文实例讲述了python中列表元素连接方法join用法.分享给大家供大家参考.具体分析如下: 创建列表: >>> music = ["Abba","Rolling Stones","Black Sabbath","Metallica"] >>> print music 输出: ['Abba', 'Rolling Stones', 'Black Sabbath', 'Metallica']

python中的hashlib和base64加密模块使用实例_python

看到好几位博主通过对模块的各个击破学习python,我也效法一下,本篇说一下python中加密涉及到的模块. hashlib hashlib模块支持的加密算法有md5 sha1 sha224 sha256 sha384 sha512(加密原理请参考此处),使用起来也很简单. 以md5加密为例,有两种方法: 一. 追加模式 代码示例: 复制代码 代码如下:  import hashlib #引入hashlib模块    mm = hashlib.md5() #创建一个md5对象  mm.updat

Python中的XML库4Suite Server的介绍_python

在继续阅读本文之前,您务必要对我们在本专栏中将要讨论的一些技术有所了解.我们要使用的技术包括:可扩展的样式表语言转换(Extensible Stylesheet Language Transformations,XSLT).XML 路径语言(XML Path Language,XPath)和资源描述框架(Resource Description Framework,RDF).在 参考资料部分有到关于所有这些技术的信息的链接.4Suite Server 概述 我们将使用由本文作者参与开发的 XML

python中使用smtplib和email模块发送邮件实例_python

SMTP模块 这么多已定义的类中,我们最常用的的还是smtplib.SMTP类,就具体看看该类的用法:smtp实例封装一个smtp连接,它支持所有的SMTP和ESMTP操作指令,如果host和port参数被定义,则smtp会在初始化期间自动调用connect()方法,如果connect()方法失败,则会触发SMTPConnectError异常,timeout参数设置了超时时间.在一般的调用过程中,应该遵connetc().sendmail().quit()步骤. SMTP模块主要方法 下面我们来

Python中字典和JSON互转操作实例_python

JSON是一种轻量级的数据交换格式,各种语言都有良好的支持.字典是Python的一种数据结构.可以看成关联数组. 有些时候我们需要设计到字典转换成JSON序列化到文件,或者从文件中读取JSON.简单备忘一下. Dict转JSON写入文件 复制代码 代码如下: #!/usr/bin/env python # coding=utf-8 import json d = {'first': 'One', 'second':2} json.dump(d, open('/tmp/result.txt', '