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 k-近邻算法实例分享
Jun 11 Python
python将文本转换成图片输出的方法
Apr 28 Python
在Python中操作时间之strptime()方法的使用
Dec 30 Python
Python并发编程协程(Coroutine)之Gevent详解
Dec 27 Python
python 定义给定初值或长度的list方法
Jun 23 Python
python取数作为临时极大值(极小值)的方法
Oct 15 Python
推荐8款常用的Python GUI图形界面开发框架
Feb 23 Python
Python GUI库PyQt5图形和特效样式QSS介绍
Feb 25 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
Python3基于print打印带颜色字符串
Jul 06 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
Oct 15 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
Apr 21 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
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
2007/04/20 Javascript
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
通过jQuery源码学习javascript(三)
2012/12/27 Javascript
js调试工具Console命令详解
2014/10/21 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
JavaScript中诡异的delete操作符
2015/03/12 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
javascript回到顶部特效
2016/07/30 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
Python多进程通信Queue、Pipe、Value、Array实例
2014/11/21 Python
python先序遍历二叉树问题
2017/11/10 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
python生成九宫格图片
2018/11/19 Python
简单了解python变量的作用域
2019/07/30 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
HTML5使用drawImage()方法绘制图像
2014/06/23 HTML / CSS
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
岗位明星事迹材料
2014/05/18 职场文书
党的群众路线教育实践活动整改落实情况自查报告
2014/10/28 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
搞笑婚礼主持词开场白
2015/11/24 职场文书
新员工入职感言范文!
2019/07/04 职场文书
Python 实现定积分与二重定积分的操作
2021/05/26 Python
Python函数式编程中itertools模块详解
2021/09/15 Python