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通过线程实现定时器timer的方法
Mar 16 Python
Python实现简单的文件传输与MySQL备份的脚本分享
Jan 03 Python
Python多线程、异步+多进程爬虫实现代码
Feb 17 Python
Python for Informatics 第11章之正则表达式(二)
Apr 21 Python
python决策树之CART分类回归树详解
Dec 20 Python
详解配置Django的Celery异步之路踩坑
Nov 25 Python
python实现文本界面网络聊天室
Dec 12 Python
python获取交互式ssh shell的方法
Feb 14 Python
Python交互式图形编程的实现
Jul 25 Python
Django多进程滚动日志问题解决方案
Dec 17 Python
在Keras中利用np.random.shuffle()打乱数据集实例
Jun 15 Python
Python实现GIF图倒放
Jul 16 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 UTF8 文件的签名问题
2009/10/30 PHP
php设计模式 Mediator (中介者模式)
2011/06/26 PHP
php验证session无效的解决方法
2014/11/04 PHP
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
解决Jquery load()加载GB2312页面时出现乱码的两种方案
2013/09/10 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
js获取select标签选中值的两种方式
2014/01/09 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
2017/03/08 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
[47:45]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第一场 2月26日
2021/03/11 DOTA
Python装饰器的函数式编程详解
2015/02/27 Python
浅谈Python处理PDF的方法
2017/11/10 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
2020/12/07 Python
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
HTML5制作表格样式
2016/11/15 HTML / CSS
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
老海军美国官网:Old Navy
2016/09/05 全球购物
佳能加拿大网上商店:Canon eStore Canada
2018/04/04 全球购物
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
作文评语集锦大全
2014/04/23 职场文书
企业形象策划方案
2014/05/29 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
检讨书怎么写
2015/01/23 职场文书
委托书格式要求
2015/01/28 职场文书
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python