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实现换行符转换的脚本的教程
Apr 16 Python
Python实现批量检测HTTP服务的状态
Oct 27 Python
Python3.6安装及引入Requests库的实现方法
Jan 24 Python
在python里从协程返回一个值的示例
Feb 19 Python
分析经典Python开发工程师面试题
Apr 08 Python
python切片(获取一个子列表(数组))详解
Aug 09 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
Aug 13 Python
Python @property原理解析和用法实例
Feb 11 Python
Django 404、500页面全局配置知识点详解
Mar 10 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
Mar 20 Python
PyCharm常用配置和常用插件(小结)
Feb 06 Python
Python实现信息轰炸工具(再也不怕说不过别人了)
Jun 11 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实现的交通银行网银在线支付接口ECSHOP插件和使用例子
2014/05/10 PHP
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
php查找字符串出现次数的方法
2014/12/01 PHP
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
2012/08/09 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
2016/12/12 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
node.js操作MongoDB的实例详解
2017/10/11 Javascript
webpack配置之后端渲染详解
2017/10/26 Javascript
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
ES6 Array常用扩展的应用实例分析
2019/06/26 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
解决Vue @submit 提交后不刷新页面问题
2020/07/18 Javascript
Python统计列表中的重复项出现的次数的方法
2014/08/18 Python
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
python下载文件记录黑名单的实现代码
2017/10/24 Python
python代码实现ID3决策树算法
2017/12/20 Python
python使用RNN实现文本分类
2018/05/24 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
python的faker库用法
2019/11/28 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
Python reduce函数作用及实例解析
2020/05/08 Python
python tkinter的消息框模块(messagebox,simpledialog)
2020/11/07 Python
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
商场活动策划方案
2014/01/24 职场文书
顶碗少年教学反思
2014/02/21 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
星际争霸:毕姥爷vs解冻01
2022/04/01 星际争霸
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang