python处理圆角图片、圆形图片的例子


Posted in Python onApril 25, 2014

效果图如下:

python处理圆角图片、圆形图片的例子
图1(头像图片剪成圆形的,其他为透明)

python处理圆角图片、圆形图片的例子
图2(给图片的4个角加椭圆)

以前没处理过,处理起来真是有点费力呀。

用到的模块:

import os, math
import Image
import ImageDraw

1 头像图片剪成圆形的,其他为透明

搜索了好久,没有找到比较好的方法,有个博客(不好意思,忘记博客地址了)用了一个比较诡异的方法,我试了一下,除了处理jpg图片没有格式转换,其他的都没有问题,我当时就先按照那个方法来了

def circle():
    ima = Image.open("test.jpg").convert("RGBA")
    size = ima.size
    # 因为是要圆形,所以需要正方形的图片
    r2 = min(size[0], size[1])
    if size[0] != size[1]:
        ima = ima.resize((r2, r2), Image.ANTIALIAS)
    imb = Image.new('RGBA', (r2, r2),(255,255,255,0))
    pima = ima.load()
    pimb = imb.load()
    r = float(r2/2) #圆心横坐标
    for i in range(r2):
        for j in range(r2):
            lx = abs(i-r+0.5) #到圆心距离的横坐标 
            ly = abs(j-r+0.5)#到圆心距离的纵坐标
            l  = pow(lx,2) + pow(ly,2)
            if l <= pow(r, 2):
                pimb[i,j] = pima[i,j]
    imb.save("test_circle.png")

这个方法是 计算每个像素到原点(就是图片中心点)的距离来画圆形的

2、给图片的4个角加椭圆

def circle_corder_image():
    im = Image.open("test.jpg").convert("RGBA")
    rad = 10  # 设置半径  
    circle = Image.new('L', (rad * 2, rad * 2), 0)
    draw = ImageDraw.Draw(circle)
    draw.ellipse((0, 0, rad * 2, rad * 2), fill=255)
    alpha = Image.new('L', im.size, 255)
    w, h = im.size
    alpha.paste(circle.crop((0, 0, rad, rad)), (0, 0))
    alpha.paste(circle.crop((0, rad, rad, rad * 2)), (0, h ? rad))
    alpha.paste(circle.crop((rad, 0, rad * 2, rad)), (w ? rad, 0))
    alpha.paste(circle.crop((rad, rad, rad * 2, rad * 2)), (w ? rad, h ? rad))
    im.putalpha(alpha)
    im.save('test_circle_corder.png')

用了这个方法后,想了一想,头像图片剪成圆形的,其他为透明,用这个方法也是可以的,于是画圆形有了下面的方法:

def circle_new():
    ima = Image.open("test.jpg").convert("RGBA")
    size = ima.size
    r2 = min(size[0], size[1])
    if size[0] != size[1]:
        ima = ima.resize((r2, r2), Image.ANTIALIAS)
    circle = Image.new('L', (r2, r2), 0)
    draw = ImageDraw.Draw(circle)
    draw.ellipse((0, 0, r2, r2), fill=255)
    alpha = Image.new('L', (r2, r2), 255)
    alpha.paste(circle, (0, 0))
    ima.putalpha(alpha)
    ima.save('test_circle.png')

虽然最后我想要的都有了,但是通过对这2个问题的研究,我看到了python 图片处理的强大,好多还值得我去学习研究。

Python 相关文章推荐
python使用PyV8执行javascript代码示例分享
Dec 04 Python
python使用装饰器和线程限制函数执行时间的方法
Apr 18 Python
python如何统计序列中元素
Jul 31 Python
Anaconda下配置python+opencv+contribx的实例讲解
Aug 06 Python
python 字典修改键(key)的几种方法
Aug 10 Python
python爬虫超时的处理的实例
Dec 19 Python
Python中查看变量的类型内存地址所占字节的大小
Jun 26 Python
使用Python获取当前工作目录和执行命令的位置
Mar 09 Python
python selenium操作cookie的实现
Mar 18 Python
浅谈django channels 路由误导
May 28 Python
Python使用Selenium实现淘宝抢单的流程分析
Jun 23 Python
python 提高开发效率的5个小技巧
Oct 19 Python
python实现的阳历转阴历(农历)算法
Apr 25 #Python
Python实现的简单万年历例子分享
Apr 25 #Python
python实现simhash算法实例
Apr 25 #Python
python实现DNS正向查询、反向查询的例子
Apr 25 #Python
python网络编程之TCP通信实例和socketserver框架使用例子
Apr 25 #Python
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
Apr 25 #Python
python中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 #Python
You might like
php图片验证码代码
2008/03/27 PHP
php使用ereg验证文件上传的方法
2014/12/16 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
CSS+Jquery实现页面圆角框方法大全
2009/12/24 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
2015/08/17 Javascript
JavaScript实现页面跳转的几种常用方式
2015/11/28 Javascript
你不知道的 javascript【推荐】
2017/01/08 Javascript
jquery滚动条插件slimScroll使用方法
2017/02/09 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
JS库之wow.js使用方法
2017/09/14 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
2018/01/18 Javascript
vuex操作state对象的实例代码
2018/04/25 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
简介Python中用于处理字符串的center()方法
2015/05/18 Python
python简单实现获取当前时间
2016/08/27 Python
python奇偶行分开存储实现代码
2018/03/19 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
python算法题 链表反转详解
2019/07/02 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
Eyeko美国:屡获殊荣的睫毛膏、眼线笔和眉妆
2018/07/05 全球购物
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
StubHub中国:购买和出售全球活动门票
2020/01/01 全球购物
EJB面试题
2015/07/28 面试题
单位创先争优活动方案
2014/01/26 职场文书
教师党员先进性教育自我剖析材料思想汇报
2014/09/24 职场文书
大连星海广场导游词
2015/02/10 职场文书
小浪底导游词
2015/02/12 职场文书
大学生党员个人总结
2015/02/13 职场文书
安全生产奖惩制度
2015/08/06 职场文书
开学第一天的感想
2015/08/10 职场文书
小学课改工作总结
2015/08/13 职场文书
2019思想汇报范文
2019/05/21 职场文书