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检查序列seq是否含有aset中项的方法
Jun 30 Python
在Django的视图中使用数据库查询的方法
Jul 16 Python
Python优先队列实现方法示例
Sep 21 Python
Python爬取当当、京东、亚马逊图书信息代码实例
Dec 09 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
Jan 02 Python
Python返回数组/List长度的实例
Jun 23 Python
python递归全排列实现方法
Aug 18 Python
初次部署django+gunicorn+nginx的方法步骤
Sep 11 Python
分享一个pycharm专业版安装的永久使用方法
Sep 24 Python
使用Python的datetime库处理时间(RPA流程)
Nov 24 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
Jan 08 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
May 26 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
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
PHP制作图形验证码代码分享
2014/10/23 PHP
PHP.vs.JAVA
2016/04/29 PHP
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
使用JSON.parse将json字符串转换成json对象的时候会出错
2014/09/04 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
利用vue-i18n实现多语言切换效果的方法
2019/06/19 Javascript
微信小程序中的列表切换功能实例代码详解
2020/06/09 Javascript
vue实现列表滚动的过渡动画
2020/06/29 Javascript
[00:10]DOTA2 TI9勇士令状明日上线
2019/05/07 DOTA
解析Python中while true的使用
2015/10/13 Python
Python切片操作深入详解
2018/07/27 Python
python递归全排列实现方法
2018/08/18 Python
解决django前后端分离csrf验证的问题
2019/02/03 Python
python抓取需要扫微信登陆页面
2019/04/29 Python
python解析多层json操作示例
2019/12/30 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
产品质量承诺范本
2014/03/31 职场文书
软件项目实施计划书
2014/05/02 职场文书
鉴定评语大全
2014/05/05 职场文书
需求分析说明书
2014/05/09 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
离婚案件上诉状
2015/05/23 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
诚信教育主题班会
2015/08/13 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书
python 自动化偷懒的四个实用操作
2021/04/11 Python
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python