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 相关文章推荐
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
Jun 25 Python
Python常用模块介绍
Nov 21 Python
Python使用Flask框架同时上传多个文件的方法
Mar 21 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 Python
python斐波那契数列的计算方法
Sep 27 Python
python实现弹窗祝福效果
Apr 07 Python
python实现大文件分割与合并
Jul 22 Python
python输出带颜色字体实例方法
Sep 01 Python
python爬取王者荣耀全皮肤的简单实现代码
Jan 31 Python
python3.7调试的实例方法
Jul 21 Python
用 python 进行微信好友信息分析
Nov 28 Python
python 镜像环境搭建总结
Sep 23 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中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
2011/03/23 PHP
PHP下判断网址是否有效的代码
2011/10/08 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
javascript 自定义回调函数示例代码
2014/09/26 Javascript
javascript获取四位数字或者字母的随机数
2015/01/09 Javascript
JavaScript中的getDay()方法使用详解
2015/06/09 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
2017/01/17 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
JavaScript创建对象的七种方式(推荐)
2017/06/26 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
2018/02/22 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
node.js 如何监视文件变化
2020/09/01 Javascript
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
[46:40]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
使用Python编写提取日志中的中文的脚本的方法
2015/04/30 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
Python探索之pLSA实现代码
2017/10/25 Python
python实现学生信息管理系统
2020/04/05 Python
python模拟表单提交登录图书馆
2018/04/27 Python
Python3读取Excel数据存入MySQL的方法
2018/05/04 Python
Python实现基于POS算法的区块链
2018/08/07 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
python3 循环读取excel文件并写入json操作
2020/07/14 Python
如何使用amaze ui的分页样式封装一个通用的JS分页控件
2020/08/21 HTML / CSS
关于爱国的演讲稿
2014/05/07 职场文书
通信工程求职信
2014/07/16 职场文书
公务员培的训心得体会
2014/09/01 职场文书
员工家属慰问信
2015/03/24 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书
小学三年级班主任工作经验交流材料
2015/11/02 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书