前言

本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装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语言头像_python图像处理-个性化头像相关推荐

  1. python代码图片头像_python图像处理-个性化头像

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

  2. Python语言Flask开发框架实现个性化新闻推荐网 在线新闻推荐系统 基于用户、物品的协同过滤推荐算法开发

    Python语言Flask开发框架实现个性化新闻推荐网 在线新闻推荐系统 基于用户.物品的协同过滤推荐算法开发WebNewsRecSystemPython 一.项目简介 1.开发工具和使用技术 Pyt ...

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

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

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

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

  5. python语言结构_Python语言表示语句结构时采用

    Python语言表示语句结构时采用 答: 缩进 夏代出现专门的教射和习射的场所是 . 答:序 五行相生相克,又分别对应五种颜色,其中火对应颜色() 答:赤 非暴力沟通中的"表达情绪" ...

  6. python语言核心技术_python核心技术

    基本语法 Python的设计目标之一是让代码具备高度的可阅读性.它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观.它不像其他的静态语言如C.Pascal那样需要重复书写声明语 ...

  7. python语言做法_python学习笔记(十六)

    ## Python语言进阶 ### 重要知识点 - 生成式(推导式)的用法 ```Python prices = { 'AAPL': 191.88, 'GOOG': 1186.96, 'IBM': 1 ...

  8. python语言用法_python语言基本语句用法总结(1.)

    python语句与语法 1.python简单语句的基本介绍 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21>>> wh ...

  9. python语言画心_python语言还是java如何用python画爱心

    用python绘制爱心的基本步骤如下: 002pc.com对<python语言还是java如何用python画爱心>总结来说,为我们学习Python很实用. 首先先下载安装好python程 ...

最新文章

  1. CSS页面布局解决方案大全
  2. 批量实现ssh免交互认证
  3. Flutter1.12与原生Android交互(kotlin)
  4. require.js的基本用法
  5. 为什么开源在计算机专业的学生中不那么流行?
  6. Java与正则表达式
  7. 【bzoj1532】[POI2005]Kos-Dicing 二分+网络流最大流
  8. 高帮足球鞋_高帮运动鞋和晕车症可以教给我们有关VR设计的知识
  9. 链路层到网络层的数据传递
  10. Web前端开发最佳实践(3):前端代码和资源的压缩与合并
  11. C#学习笔记(三):值类型、引用类型及参数传递
  12. 十六进制的字符对照表
  13. 搭建测试环境详细步骤
  14. php ci 优化,CodeIgniter 性能优化
  15. topcoder使用介绍
  16. 一直被模仿从未被超越的AWS为什么这么强?
  17. HTML第二天学习笔记
  18. scala函数自我小结(待更新)
  19. 面试:25匹马,5个赛道,选出前三,最优解
  20. Charles 安装图解(Mac 抓包工具)

热门文章

  1. 简明python教程英语版_简明Python教程(A Byte of Python中文版)
  2. 关于USB匹配电阻的一些疑问和解答
  3. 【解决方法】No signature of method: build_5woso1t2zz3j65kzgsuf20yp6.android() is applicable
  4. java timer 重启服务器_服务器启动完成执行定时任务Timer,TimerTask
  5. C# Action和Func的用法详解
  6. js把时间转化刚刚、几秒前、几分种前、几小时前、几天前
  7. 【历史上的今天】6 月 27 日:摩托罗拉背后的高尔文家族;微软发布 ASP.NET Core;靠计算机起家的美国大亨
  8. MPU6050使用/正点原子代码移植/MPU6050注意事项/关于几个频率的解释/STM32F103
  9. 培训机构小程序功能分析
  10. 酒吧经营你要知道的:酒吧定位