首页 > 编程知识 正文

如何将图片背景变成白色,把图片变成透明背景

时间:2023-05-06 20:18:18 阅读:161312 作者:259

咪哥杂谈

本篇的阅读时间约为6分钟。

1

前言

上周,我分享了脸部识别的Python库。 今天继续说我上次在评论区留言的后续吧。

既然是追赶热点的需求,想想这几年发生了身边的热点事件。

我们来简单整理一下。 从我毕业到今年我感受到的热点事件。

2017年圣诞节,微信头像戴着圣诞帽子。

2019年国庆节,微信头像,给我一面国旗。

2020年初肺炎,微信头像,共同抗疫,带上口罩。

不,微信作为目前主流的社交平台,每年伴随热点的总会都与头像有关。

虚拟形象是什么? 虚拟形象可以代表社交网络上的人脸。 一小撮人玩的话,后面就像雪人一样人会增加。

因此,在最近文章中,以制作头像模板、或图像模板为中心,尝试写下相关的实现技术。 等待下一个流量到来,直接设置模板,做服务就可以了。

上周写了图像人脸识别基础的应用,怎么实现模板? 或者如何改变提问方式,将热点应用于用户的原始图像?

那一定需要把热点图像的背景变成透明色,覆盖在原始图像上。 在这里,我对今天文章的标题提出了问题。 ) )

今天首先介绍把图像的背景色转换成透明色的方法。 以下开始正文。

2

环境准备

开始之前,请参阅本文的第四部分

图学小知识,不看后悔100%有用!

看完之后,你就明白了我们平时说的RGB的意思,之后就好说了。

接下来,您只需遵循pillow库。

pip install pillow 3

代码部分

没有几行代码,但需要理解。

frompilimportimagedeftransparent _ back (: img=image.open ) ' old.png ' )图像将转换为四个通道。 第四个通道是我们修正的透明度。 返回新对象img=img.convert'rgba'#以获取图像的像素大小width。 height=img.size pixel _ data=img.load (forhinrange ) height ) :forwinrange(width ) : pixel=pixel_data[w h 的四个通道中,如果颜色值大于浅灰色,则像素点为透明块IFR 220 andg 220 andg 220 andb 220 anda 2203360 pixel 255,0 ) img.save('new.png ) )新图像

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》中zgdgb图片:

假如你没有将眼镜的图片背景透明化,那么贴上去图片最终成像:

如果眼镜背景透明化了,那么贴上去的图片则是这样的:

至于如何将眼睛用技术手段覆盖在zgdgb眼睛上,将在下一篇中介绍。

5

总结

图片透明化,如果做设计的或者个人网站时候,经常会用到,有些网站在设计 logo 时,logo的图片背景透明化,才能完美符合网站的底层色彩去呈现,类似抖音官网的这样:

好啦,本篇内容就到这里,如果你有什么想说的,欢迎评论区留言。

一句很鸡汤的话送给大家:“机会往往是留给有准备的人”。有些东西,看到了,可以提前布局,静静地等待"热潮"的到来。

PS:本篇代码很简短,就不上传到 github 了。

题图 上海夜景 - pexels - Manuel Joseph

往期精彩回顾

模拟恐怖片里的"跳字特效"

用Python鬼畜落寞的红牛照片,了解下?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。