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中self的用法
Jun 04 Python
python 读取txt,json和hdf5文件的实例
Jun 05 Python
Python实现的爬虫刷回复功能示例
Jun 07 Python
Python中三元表达式的几种写法介绍
Mar 04 Python
如何通过雪花算法用Python实现一个简单的发号器
Jul 03 Python
对python3中的RE(正则表达式)-详细总结
Jul 23 Python
Python编写一个验证码图片数据标注GUI程序附源码
Dec 09 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
May 25 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
Oct 15 Python
Python实现壁纸下载与轮换
Oct 19 Python
OpenCV-Python使用cv2实现傅里叶变换
Jun 09 Python
Django框架中模型的用法
Jun 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
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
php判断当前用户已在别处登录的方法
2015/01/06 PHP
php浏览历史记录的方法
2015/03/10 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
firefox中JS读取XML文件
2006/12/21 Javascript
十个优秀的Ajax/Javascript实例网站收集
2010/03/31 Javascript
JavaScript 学习历程和心得分享
2010/12/12 Javascript
IE不支持getElementsByClassName最终完美解决方案
2012/12/17 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
JavaScript开发人员的10个关键习惯小结
2014/12/05 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
javascript url几种编码方式详解
2016/06/06 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
Angular中使用MathJax遇到的一些问题
2017/12/15 Javascript
js运算符的一些特殊用法
2018/07/29 Javascript
vue实现路由监听和参数监听
2019/10/29 Javascript
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
关于Python作用域自学总结
2019/06/10 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
python进行二次方程式计算的实例讲解
2020/12/06 Python
python 用pandas实现数据透视表功能
2020/12/21 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
2021/01/28 Python
纯CSS实现聊天框小尖角、气泡效果
2014/04/04 HTML / CSS
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
UGG美国官网:购买UGG雪地靴、拖鞋和鞋子
2017/12/31 全球购物
澳大利亚最大的在线美发和美容零售商之一:My Hair Care & Beauty
2019/08/24 全球购物
教研处工作方案
2014/05/26 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
小学运动会开幕词
2015/01/28 职场文书
python 经纬度求两点距离、三点面积操作
2021/06/03 Python
MySQL存储过程及语法详解
2022/08/05 MySQL