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 23 Python
Python 常用的安装Module方式汇总
May 06 Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
python+unittest+requests实现接口自动化的方法
Nov 29 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
Jun 13 Python
python的slice notation的特殊用法详解
Dec 27 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
Mar 30 Python
python实现密度聚类(模板代码+sklearn代码)
Apr 27 Python
python新手学习可变和不可变对象
Jun 11 Python
python如何将图片转换素描画
Sep 08 Python
利用python为PostgreSQL的表自动添加分区
Jan 18 Python
sklearn中的交叉验证的实现(Cross-Validation)
Feb 22 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实现数据库的增删查改功能及完整代码
2018/04/18 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
jQuery实现简洁的导航菜单效果
2015/11/23 Javascript
javascript Slip.js实现整屏滑动的手机网页
2015/11/25 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
详解Vue路由开启keep-alive时的注意点
2017/06/20 Javascript
webpack分离css单独打包的方法
2018/06/12 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
2019/06/20 jQuery
原生js实现抽奖小游戏
2019/06/27 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
微信小程序获取地理位置及经纬度授权代码实例
2019/09/18 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
js实现电灯开关效果
2021/01/19 Javascript
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
浅谈python字符串方法的简单使用
2016/07/18 Python
python使用webdriver爬取微信公众号
2018/08/31 Python
Python操作Jira库常用方法解析
2020/04/10 Python
在html5的Canvas上绘制椭圆的几种方法总结
2013/01/07 HTML / CSS
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
小学后勤管理制度
2014/01/14 职场文书
保密普查工作实施方案
2014/02/25 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
社区综治工作汇报
2014/10/27 职场文书
2014年小学美术工作总结
2014/12/20 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电