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使用MONGODB入门实例
May 11 Python
python实现文件快照加密保护的方法
Jun 30 Python
在Django的URLconf中进行函数导入的方法
Jul 18 Python
numpy中索引和切片详解
Dec 15 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
Feb 07 Python
tensorflow 输出权重到csv或txt的实例
Jun 14 Python
python求解数组中两个字符串的最小距离
Sep 27 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
Oct 29 Python
python银行系统实现源码
Oct 25 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
Mar 12 Python
Appium+Python实现简单的自动化登录测试的实现
Jan 26 Python
一篇文章带你搞懂Python类的相关知识
May 20 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中函数的形参与实参的问题说明
2010/09/01 PHP
PHP删除数组中空值的方法介绍
2014/04/14 PHP
PHP三元运算的2种写法代码实例
2014/05/12 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
PHP基础之输出缓冲区基本概念、原理分析
2019/06/19 PHP
Ext对基本类型的扩展 ext,extjs,format
2010/12/25 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
纯js实现重发验证码按钮倒数功能
2015/04/21 Javascript
javaScript中slice函数用法实例分析
2015/06/08 Javascript
jQuery寻找n以内完全数的方法
2015/06/24 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
js微信扫描二维码登录网站技术原理
2016/12/01 Javascript
清除输入框内的空格
2016/12/21 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
新手快速入门JavaScript装饰者模式与AOP
2019/06/24 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
深入浅出分析Python装饰器用法
2017/07/28 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
Python魔法方法详解
2019/02/13 Python
python微信撤回监测代码
2019/04/29 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
C有"按引用传递"吗
2016/09/06 面试题
行政助理岗位职责范文
2013/12/03 职场文书
装饰资料员岗位职责
2013/12/30 职场文书
户外亲子活动策划方案
2014/02/07 职场文书
校本教研活动总结
2014/07/01 职场文书
大学生村官入党自传
2015/06/26 职场文书
vue使用wavesurfer.js解决音频可视化播放问题
2022/04/04 Vue.js
Elasticsearch 基本查询和组合查询
2022/04/19 Python
微软官方消息,在 2023 年 4 月 11 日之后微软将不再为 Office 2013 和 Skype for Business 2015 提供安全更新
2022/04/21 数码科技