如何用技术手段将图片背景变为透明?
咪哥杂谈
本篇阅读时间约为 6 分钟。
1
前言
上周给大家分享了人脸识别的一个 Python 库。今天来继续讲讲我上次在评论区留言的后续。
既然是追热点的需求,大家可以想想,近几年发生在身边的热点事件。
我来简单的给大家梳理一下,从我毕业之后到今年我感知到的热点事件。
2017年圣诞节,微信头像,戴上了圣诞帽子。
2019年国庆节,微信头像,给我一面国旗。
2020年初肺炎,微信头像,共同抗疫,带上口罩。
发现没有,微信作为现在主流的社交平台,每年伴随热点的总会和头像有关。
头像是什么?头像可以代表网络社交上一个人的门面,只要有一小撮人玩起来,那后面就像滚雪球似的,人也就越来越多。
所以,近期的文章,我来围绕着制作头像模板,或者说是图像模板,来写一写相关的实现技术。等待着下一次的流量过来,直接套好模板,做出服务就行了。
上周写了图像人脸识别基础的应用,那如何实现套模板?或者换个问法,如何将热点套用在用户原有的图片上?
那一定是需要将热点图片的背景变为透明色,并且覆盖在原有的图像上了。(此处,与今天文章的标题点题了。)
今天先来介绍如何将图片的背景颜色变为透明色。下面开始正文。
2
环境准备
开始之前,先来重温下这篇文章的第四部分:
图像学小知识,不看后悔...100%有用!
看完后,你会理解我们平时所说的 RGB 的含义,那后面就好说了。
接下来,只需要按照 pillow 库。
pip install pillow
3
代码部分
代码没有几行,但是需要理解下:
from PIL import Image
def transparent_back():img = Image.open('old.png')# 图片转换为四通道。第四个通道就是我们要修改的透明度。返回新的对象img = img.convert('RGBA') # 获取图片像素尺寸width, height = img.size pixel_data = img.load()for h in range(height):for w in range(width):pixel = pixel_data[w, h]r = pixel[0]g = pixel[1]b = pixel[2]a = pixel[3]# 四通道,色彩值大于浅灰色,则将像素点变为透明块if r > 220 and g > 220 and b > 220 and a > 220:pixel_data[w, h] = (255, 255, 255, 0)img.save('new.png') # 保存新图片
pillow库的 Image 在之前的文章中提到过。
open打开本地图片,通过 convert 方法将图片转为 R/G/B/A。
(RGBA是代表Red(红色) Green(绿色) Blue(蓝色)和 Alpha的色彩空间)
这里的 A,代表透明度的意思,尽管它英文本意 alpha 没有透明度的意思。感兴趣的可以看下知乎的这篇文章。
https://zhuanlan.zhihu.com/p/24415265
接下来,获取图片的每个像素点的这个通道值,如果此时的色彩值亮于220这个数值,则将该像素点块的 alpha 通道置为透明。
来直观的看下 221 数值的颜色(灰色):
255呢(纯白色)?
这意味着,在我的这段代码中,只有当你原图片的背景色,需要在这之间的色差值,才能被变为透明图片,而恰好,我们大多数图片背景都是偏白色,所以,如果当你背景为深黑色系,那么,需要将这段代码的数值修改下。
4
结果展示
以下面的眼镜举例,这是一张白底为底色的眼睛:
找了一张最近B站重做的《头文字D》中周董图片:
假如你没有将眼镜的图片背景透明化,那么贴上去图片最终成像:
如果眼镜背景透明化了,那么贴上去的图片则是这样的:
至于如何将眼睛用技术手段覆盖在周董眼睛上,将在下一篇中介绍。
5
总结
图片透明化,如果做设计的或者个人网站时候,经常会用到,有些网站在设计 logo 时,logo的图片背景透明化,才能完美符合网站的底层色彩去呈现,类似抖音官网的这样:
好啦,本篇内容就到这里,如果你有什么想说的,欢迎评论区留言。
一句很鸡汤的话送给大家:“机会往往是留给有准备的人”。有些东西,看到了,可以提前布局,静静地等待"热潮"的到来。
PS:本篇代码很简短,就不上传到 github 了。
题图 上海夜景 - pexels - Manuel Joseph
▼
往期精彩回顾
▼
模拟恐怖片里的"跳字特效"
如何用技术手段将图片背景变为透明?相关推荐
- C# 图片背景变为透明
C# 图片背景变为透明 今天遇到从身份证读取信息粘贴到身份证模板身份身份证图片的需求,但是获取的身份证头像是带背景色的所以需要去掉背景色.CSDN找了半天都是bitmap.MakeTranspare ...
- 如何将已有图片做成透明水印_如何用Photoshop在图片上添加透明水印?
我们经常会在网上看到一些漂亮的图片上有添加各种水印,添加水印可以让图片有一个标记,也可以防止别人盗用你的成果.那么图片上的这些水印是怎么添加的呢?今天,小编就给大家介绍用Photoshop软件来制作图 ...
- 图片如何去掉背景色?如何使图片背景变透明?
图片设计工作者常常需要用透明背景图片,如果下载的图片素材不是透明背景的话,就需要先用图片处理工具将图片背景变透明.下面我们就使用压缩图的图片去底色(https://www.yasuotu.com/bu ...
- 怎么将素材图片背景变透明?如何一键抠除图片背景?
我们在提取一些素材图片的时候,可能会因为图片格式等原因,使原本背景透明图片变成了纯色背景图片.这时候我们需要使用抠图功能去除图片背景色,但是对不会用ps的小伙伴来说将图片背景变透明就比较困难了,所以小 ...
- 前端html分享—如何将背景变为透明
今天分享下"前端html分享-如何将背景变为透明"这篇文章,文中根据实例编码详细介绍,或许对大家的编程之路有着一定的参考空间与使用价值,需要的朋友接下来跟着云南仟龙Mark一起学习 ...
- 怎么把背景图片变透明html,怎样把图片背景变成透明
大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 以Photoshop软件为例,把图片背景变成透明的方法是: 1.首先,打开电脑中的Photoshop软件,进入主界面: 2.在Ph ...
- poi导出图片失真变为红色和图片背景变为黑色
插入图片: private void setPicture(HSSFWorkbook wb, HSSFPatriarch patriarch, String pic, int iRowStart, i ...
- 如何把winform图片背景换成透明颜色_如何用photoshop更换图片背景颜色?
生活与工作中我们经过会需要更改图片的背景颜色,首先的软件肯定是photoshop,那么对于不熟悉photoshop的人来说,如何通过这个软件来更改图片的背景色呢,下面和大家分享下小技巧: 首先打开ph ...
- 图片怎么去掉背景变为透明?如何把图片的背景去掉?
当我们制作海报.商品宣传图等内容时,经常会需要将图片底色变透明,那么怎么才能把图片去底色(https://www.yasuotu.com/pdfyasuo)呢?试试这款在线图片去底色工具,只需要简单 ...
最新文章
- Angular使用@Input和@Output实现父子组件互相传参(类似Vue的props和this.emit)
- 【转】NHIBERNATE的各种保存方式的区别 (SAVE,PERSIST,UPDATE,SAVEORUPDTE,MERGE,FLUSH,LOCK)
- 一分钟了解Android横竖屏 mdpi hdpi xhdpi xxhdpi xxxhdpi
- js 中声明变量 “提前”
- html下拉框选中第二个,html通过点击第一个select改变第二关select的内容
- Arraylist添加5个学生对象,按成绩降序, 删除前三之后的学生
- 64位程序怎么判断指针是否有效_AArch64应用程序级编程模型
- c语言 二维数组 文库,c语言二维数组练习题
- 计算机网络—体系结构相关真题练习(二)
- java.io.IOException: Server asks us to fall back to SIMPLE auth, but this client is confi的问题
- 《Ray Tracing in One Weekend》——Chapter 9: Dielectrics
- c语言文件修改某一行,利用C语言替换文件中某一行的方法
- Hadoop工具让数据仓库迁移更轻松
- 分析:谷歌不会退出中国市场的8大理由
- cannot reach adb server, attempting to reconnect.
- 复选框判断是否选中及获取值
- 多功能音频工具的旗舰音乐编辑工具!Music Studio
- win10u盘被写保护怎么解除_win10系统所有usb都被写保护怎么取消_win10系统usb被写保护怎么办...
- Telnet服务配置
- 营收净利大增股价却暴跌 趣店靠什么赢回资本市场的信心?