前言

本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过。

前言

很多时候我们都想要一个专属的头像表现,除了图像内容外不同,形状不一样,下面我就来说说如何使用python来实现个性化头像。

下面的圆形头像和牛角头像都是我使用python实现的,接下来我将通过讲解这个实现的过程,给大家带来一些想法。

实现原理

我们可以看到原来图片是方正的,通过处理后,图像形状外的地方都变成白色,这里实际上是透明,上面第三幅图可以帮助我们理解。

我们的处理过程其实就是将原来的图片变成RGBA格式,RGB是红绿蓝三种颜色,这里的A就是透明通道的意思,A的取值范围是从0-255之间变化,当A设置为0时,完全透明,255时完全不透明。

下面蓝色圆形,可以看到透明度越高,自身的颜色就变淡了,底部的文字就看的更清楚了,如果100%透明,圆形就会消失不存在了。

回到我们上面原来的猫图片,只要我们能够将猫图像的圆形区外的所有地方变成完全透明(看不见了),那么整个图片就变成圆形的了。

这里如果自己去计算圆形的边界,圆形外侧全部设置为完全透明,圆形内容不变,一个个像素点去处理,那将会非常麻烦,牛角的就更不用想了。

在PIL库里面,提供了两种方法帮助我们去解决这个问题,第一种是使用Image.putalpha方法;第二种是使用Image.paste蒙版粘贴图片的方法。

putalpha方法代码实现

这里的putalpha正常里面是放入一个0-255的数字的,表示要将这整张图片设置为透明度为多少,这是方式对于整张图片都更改透明度非常方便,但是对于更改局部或者特定形状部分的透明度就不行了;这里使用另外一种方式,传入一张灰度图模式的圆形图片(灰度图是黑白图片,灰度0是显示黑色的,灰度255是显示白色的),猫的圆形外的透明度就被设置成黑色所代表的数值0,而0在透明度中是表示完全透明的,最终猫的圆外就变成透明了,里面白色部分不透明显示出一个圆形。

上面是通过自己绘制一个图片来实现的,如果要实现一个牛角的,可能自己不会绘制,那可以去找一个现成的。

下面我就找了一张牛角图片,但是牛角是黑色的,外部是白色的,这个出来的效果是下面这样的。

显示出的效果不符合我的要求,我想要的是中间是牛角,周围是透明的,下面利用PIL的ImageOps方法先进行反色处理,把白的变成黑,黑的地方变成白,其它步骤不变。

paste方法代码实现

上面是使用putalpha方法实现的,下面再来看看如何使用paste方法如何实现。paste是粘贴的意思,如果后面没有第三个,那么就是在某个位置粘贴一张图片,最后的效果如下。

上面的效果并不是我们想要的,paste除了上面两个参数,还有第三个参数蒙版图像,这里要注意蒙版图像和putalpha的图像有所区别,中间是黑色,边缘是白色;因为蒙版的运行原理是,灰度图黑色时数值是0,表示透明度就是完全透明的意思,白色数值是255,表示透明图是完全不透明,所以整个效果就是黑色部分会透明显示出下面一层的猫,而白色部分不透明也就保留原来效果。

可优化方向

上面的图片边缘还有锯齿,也就是不够工整,但是影响不大,这个可以自己尝试再去优化调整一下。

(全文完)

python代码图片头像_python图像处理-个性化头像相关推荐

  1. python语言头像_python图像处理-个性化头像

    前言 本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑.如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过. 前言 ...

  2. python读取图片文件名_python图像处理基础之PIL和opencv

    python图像处理基础 pip install pillow 安装PIL库 1.读取图片 from PIL import Image import numpy as np #打开图片 img = I ...

  3. python代码图片头像_Python帮你微信头像任意添加装饰别再@微信官方了

    @微信官方 昨天朋友圈刷爆了@微信官方的梗,从起初的为头像添加国旗,到最后的各种Book思议的需求-而我呢?@了辣么辣么多的奥特曼,结果还是加班到12点多-最后想想,人还是得靠自己吧,@我自己吧- 昨 ...

  4. python代码图片头像_Python图片裁剪实例代码(如头像裁剪)

    今天就来说个常用的功能,图片裁剪,可用于头像裁剪啊之类的.用的还是我们之前用的哪个模块pillow 1. 安装pillow 用pip安装 pip install pillow 2. 图片裁剪 2.1 ...

  5. python代码图片头像_GitHub - nonPointer/avatar_generator: 头像图片生成器 Python代码

    avatar_generator 哈希头像图片生成器 Python代码 Identicon 在很多大型IT网站上可以见到,比如 Github, Sourceforge, Stackoveflow 等等 ...

  6. python代码图片头像_60行Python代码一键拼出你的微信好友图片墙!

    原标题:60行Python代码一键拼出你的微信好友图片墙! 源 /高级农民工文 /苏克1900 近 2000 位好友的头像拼图,有没有犯密集恐惧症?这并不震撼,如果你有 5000 位好友的话,做出来的 ...

  7. python微信头像_Python玩微信——头像组字

    上一篇,用Python实现了拿微信好友头像来拼接背景,融合成自己的新头像. 再之前呢,我们也实现了点阵字的输出与展示. 正好今天有位老哥过生日,我就把头像拼接和点阵字结合起来,搞了个头像成字的代码,请 ...

  8. 大蟒蛇python头像_Python微信好友头像大拼图案例

    最近和微信好友有关的数据分析基本都已经实现,包括微信好友性别分布分析及饼图可视化展示案例,微信好友地区分布分析及地图可视化展示案例,微信好友签名分析(数据挖掘)及文字云直观展示案例,参考此前的几篇文章 ...

  9. python识别图片中数字_Python图像处理之图片验证码识别

    在上一篇博客Python图像处理之图片文字识别(OCR)中我们介绍了在Python中如何利用Tesseract软件来识别图片中的英文与中文,本文将具体介绍如何在Python中利用Tesseract软件 ...

最新文章

  1. nginx 在负载均衡中 的配置 以获取真实IP
  2. 【struts2+hibernate+spring项目实战】数据报表jxl及生成excel(ssh项目实战)
  3. PyQt5 笔记6 -- 对话框(QDialog)
  4. boost::packaged_task相关的测试程序
  5. iOS经典面试题之深入解析类Class的iskindOfClass与isMemberOfClass的底层原理
  6. 使用 ArcGIS Desktop 切瓦片
  7. ethercat主站给从站分配多个地址_Profinet 与 EtherCAT 网关使用方法
  8. 读《深入分析Java Web技术内幕》
  9. 阿里云祝顺民:云网络的十年“修路”历程
  10. trace (矩阵的迹) 的性质
  11. hadoop中HDFS命令遇到的问题
  12. mysql 批量插入 性能_MySQL批量插入数据性能比较
  13. 网赚项目:揭秘闲鱼项目,信息差赚钱新手也能日入200+
  14. 电脑端微信多开操作方法
  15. 学生奖学金评定系统c语言,学生奖学金评定系统.doc
  16. js中Error对象
  17. HDU-4126(Genghis Khan the Conqueror)
  18. 挺带劲!这款免费开源的监控系统真强大~
  19. JavaWeb实现生成二维码
  20. Kubernetes--Pod的DNS域名和相关特性

热门文章

  1. 网易云音乐常用API浅析
  2. 组员组长mysql_GitHub - gzh51906/ManKeZhan: 组长:黄林芳 组员:陈炜,王佳伟
  3. dell10代cpu装linux,戴尔10代CPU完美装Win7|DELL 10代CPU装Win7教程
  4. dell10代cpu装linux,戴尔10代cpu装win7系统及bios设置|戴尔十代cpu台式机装win7
  5. 微信在线EXCEL自动统计人数
  6. DM MPP集群(带交叉守护进程)安装配置
  7. 小程序基于Taro的Canvas写字效果和背景图水印效果
  8. GeoServer结合FWTools切片工具发布影像金字塔切片
  9. [附源码]Python计算机毕业设计SSM绩效考核管理系统(程序+LW)
  10. 在 Docker 上搭建 PostGIS 数据库实现空间数据存储及可视化