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 列表list使用介绍
Nov 30 Python
Python实现模拟分割大文件及多线程处理的方法
Oct 10 Python
你真的了解Python的random模块吗?
Dec 12 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
Apr 23 Python
Python Requests模拟登录实现图书馆座位自动预约
Apr 27 Python
Python实现的序列化和反序列化二叉树算法示例
Mar 02 Python
tensorflow 获取checkpoint中的变量列表实例
Feb 11 Python
TensorFlow实现批量归一化操作的示例
Apr 22 Python
Python操作MySQL数据库的示例代码
Jul 13 Python
Python常用断言函数实例汇总
Nov 30 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
Dec 03 Python
CocosCreator ScrollView优化系列之分帧加载
Apr 14 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连接mysql数据库代码
2009/03/10 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
基于PHP CURL获取邮箱地址的详解
2013/06/03 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
使用php转义输出HTML到JavaScript
2015/03/27 PHP
php计算两个坐标(经度,纬度)之间距离的方法
2015/04/17 PHP
PHP实现浏览器中直接输出图片的方法示例
2018/03/14 PHP
子页向父页传值示例
2013/11/27 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
2014/09/26 NodeJs
基于javascript实现tab切换特效
2016/03/29 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
JavaScript实现简单音乐播放器
2020/04/17 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
python安装Scrapy图文教程
2017/08/14 Python
python实现快速排序的示例(二分法思想)
2018/03/12 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
Python3 元组tuple入门基础
2020/02/09 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
大学生秋游活动方案
2014/02/17 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
党员批评与自我批评
2014/10/15 职场文书
2014年医务科工作总结
2014/12/18 职场文书
2016年社区服务活动总结
2016/04/06 职场文书
如何理解python接口自动化之logging日志模块
2021/06/15 Python