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实现抓取页面上链接的简单爬虫分享
Jan 21 Python
详解JavaScript编程中的window与window.screen对象
Oct 26 Python
Python中的连接符(+、+=)示例详解
Jan 13 Python
离线安装Pyecharts的步骤以及依赖包流程
Apr 23 Python
python 读取txt,json和hdf5文件的实例
Jun 05 Python
浅谈Python的list中的选取范围
Nov 12 Python
基于python的ini配置文件操作工具类
Apr 24 Python
python3使用GUI统计代码量
Sep 18 Python
python读取ini配置文件过程示范
Dec 23 Python
flask框架url与重定向操作实例详解
Jan 25 Python
python判断正负数方式
Jun 03 Python
如何在python中实现线性回归
Aug 10 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/04/05 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
javascript iframe编程相关代码
2009/12/28 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
2013/07/05 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
webpack+vue.js快速入门教程
2016/10/12 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
2017/03/23 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
python中列表元素连接方法join用法实例
2015/04/07 Python
Python中的高级函数map/reduce使用实例
2015/04/13 Python
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
详解用python实现简单的遗传算法
2018/01/02 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
python多线程并发及测试框架案例
2019/10/15 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
Python socket模块方法实现详解
2019/11/05 Python
Python3.8安装Pygame教程步骤详解
2020/08/14 Python
Python os库常用操作代码汇总
2020/11/03 Python
Julep官网:美容产品和指甲油
2017/02/25 全球购物
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
三星法国官方网站:Samsung法国
2019/10/31 全球购物
意大利时尚奢侈品店:D’Aniello Boutique
2021/01/19 全球购物
string = null 和string = ''的区别
2013/04/28 面试题
房屋转让协议书
2014/04/11 职场文书
自我评价优缺点范文
2015/03/11 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python
MySQL实现配置主从复制项目实践
2022/03/31 MySQL
python中filter,map,reduce的作用
2022/06/10 Python