由于计算机图像一开始使用的颜色系统,是不包含透明度通道的,因此一些比较老的游戏里面的发光特效依然沿用基于线性减淡的图层混合方法来实现。对,说的就是你,DNF。在下发链接中大佬对此进行了科普。

去黑底和线性减淡的区别。,沃特碧们的Colg,DNF地下城与勇士 - COLG社区

我之前看了上述链接很久,还是感觉对于本小白来说,如何通过RGB通道滤色确定透明度的方法没有讲明白,因此今天有空专门研究了一下。

前置知识:

设实际显示的颜色为C=(r,g,b),前景色A、背景色B。

若前景色带Alpha通道(透明度通道),则C=αA+(1-α)B,0≤α≤1。

实例:先找两个特效,一明一暗,如下 ,都是来自俄罗斯手绘特效大师Dmitry Sarkisov的作品。

下面的他主页地址,会科学上网的可以去观摩下。
https://www.artstation.com/dmitrysarkisovhttps://www.artstation.com/dmitrysarkisov

   

假设背景是黑色的,处理流程如下:

1、分解gif,导入图片,指定模式为RGBA,将图片转为numpy数组;

2、对于每个像素点,求RGB三个通道的最大值,该值越大,说明像素的颜色越亮。则对应的透明度应该越低,这里直接用该值作为该像素的透明度;

3、希望最后生成的带透明度的图片A,在放在黑色背景B上时,实际显示的图片C与原图片一致。即C=αA+(1-α)B,B=(0,0,0);因此A=C/α。将原图的每个像素点的RGB值除以该像素点的透明度。

效果如下:

左边为透明通道+黑色背景。右边为原图。基本达到预期,该方法甚至没有黑边。

from PIL import Image
import numpy as np
from PIL import Image
import osdef RemoveBlackBackground(input_path:str,file_name:str,output_path:str):target_im = Image.open(os.path.join(input_path,file_name))target_im = target_im.convert('RGBA')target_img_array = np.array(target_im)#透明度target_img_Alpha = np.max(target_img_array[:,:,:3],axis=2)target_img_array[:,:,3] = target_img_Alpha#保证在黑色背景上时与原图一致target_img_Alpha = target_img_Alpha/255            target_img_array[:,:,:3]/target_img_Alpha.reshape([target_img_array.shape[0],-1,1])res_img = Image.fromarray(target_img_array)if not file.endswith(".png"):res_img.save(os.path.join(output_path,file_name[:-4]+".png"))else:res_img.save(os.path.join(output_path,file_name))

之前的链接去黑底和线性减淡的区别。,沃特碧们的Colg,DNF地下城与勇士 - COLG社区

中,提到的需要通过Gamma变换的去黑底方式这里也放出来一下

from PIL import Image
import numpy as np
from PIL import Image
import osdef RemoveBlackBackground2(input_path:str,file_name:str,output_path:str):target_im = Image.open(os.path.join(input_path,file_name))target_im = target_im.convert('RGBA')target_img_array = np.array(target_im)#透明度target_img_Alpha = np.max(target_img_array[:,:,:3],axis=2)#gamma变换target_img_dis = np.power((target_img_dis/255),3)*255target_img_array[:,:,3] = target_img_Alphares_img = Image.fromarray(target_img_array)if not file.endswith(".png"):res_img.save(os.path.join(output_path,file_name[:-4]+".png"))else:res_img.save(os.path.join(output_path,file_name))

效果如下:

前者的饱和度和光晕会保留得更完整,且后者会有黑边

Python对带光晕的图像进行去黑底黑色背景操作(附源码)相关推荐

  1. Python 实现图片格式转换,jpg\png\webp等,附源码

    Python 实现图片格式转换,jpg\png\webp等,附源码 需要使用 PIL库,但python 3是无法安装该库的,如果是python 3安装pillow库即可. 1.安装 python 2 ...

  2. 【Python项目】Python基于tkinter实现笔趣阁小说下载器(附源码)

    前言 hello,大家好呀~ 笔趣阁小说应该很多小伙伴都知道 但是用Python实现一个笔趣阁小说下载器 那岂不是爽歪歪呀 基于tkinter实现的Python版本的笔趣阁小说下载器今天小编给大家实现 ...

  3. Python爬虫学习教程 bilibili网站视频爬取!【附源码】

    Python爬虫学习教程,万物皆可爬!每个技术大牛都是从基础慢慢的提升上去的,基础知识越深以后的发展越牛!学好python,才能玩转python,那到底怎么才能学好python? 通过爬取b站案例带领 ...

  4. python爬取网站教学视频_零基础Python爬取网页文章和图片详细教学(内附源码、教学视频)...

    Python爬虫,这个我相信对于很多人来说都不陌生! 今天小编给大家提供一份零基础Python爬取网页图片以及小说的代码并且详细的和大家讲解一下! 开发环境:版本Python3.6.2!(2版本会在2 ...

  5. 【微信小程序】带你做一个公众号留言系统(附源码)

    公众号留言小程序正式开源,文章底部有源码获取方式. 我当时就用微信小程序做了一个留言助手,用了大约一个月左右的时间,留言系统的基本功能包括留言.点赞.筛选.置顶.删除.关联多个公众号等,只需要把小程序 ...

  6. Python程序打包成.exe文件(弹窗恶搞小程序附源码)

    0.先来张效果图: 1.安装pyinsatller 打开命令行窗口,输入如下指令:pip3 install pyinstaller 我的已经安装过,所以这样显示. 2.使用pyinstaller打包P ...

  7. Python模拟屏幕点击自动完成词达人任务(附源码)

    Python模拟屏幕点击自动完成微信词达人任务 该贴是以微信词达人为基础实践而写,如果我们并没有使用词达人,该源码中关键代码部分和模拟点击原理希望对大家有帮助. Python模拟屏幕点击自动完成微信词 ...

  8. 带你开发个转盘抽奖小游戏【附源码】

    程序IT圈 只提供有用的编程技术,关注即可习得新技能 1效果图 小时候有没有玩过老虎机抽奖游戏?今天一起来用代码编程实现个简单抽奖的小游戏!首先,先带大家看看实现的效果图是怎么样的: 2分析如何实现 ...

  9. 【爬虫实战项目】Python爬虫批量下载音乐飙升榜并保存本地(附源码)

    前言 今天给大家介绍的是Python爬虫批量下载音乐飙升榜并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是 ...

最新文章

  1. 《c++ templates》学习笔记(9)——第十二章 特化与重载
  2. inux系统中如何进入退出vim编辑器
  3. composer-安装插件包
  4. 男孩读计算机好还是铁路学校好,中专学计算机好还是铁路好?
  5. python—range() 函数—步长为正,左闭右开;步长为负,左开右闭
  6. First flight, Let's do it!
  7. 中国地图里暗藏的天机
  8. 戴尔服务器r720u盘装系统,DELL R720服务器U盘安装操作系统指南
  9. python是一门胶水语言_Python是唯一被称为“胶水语言”的编程语言?事实并非如此!...
  10. (python)爬虫----八个项目带你进入爬虫的世界
  11. java web 题_javaWeb习题与答案
  12. Android Studio 奇葩遭遇(xxx is never used)
  13. pdf怎样删除其中一页简单教程
  14. Linux - 权限管理(用户)
  15. 热力地图高德_高德地图
  16. HDU 5148 Cities
  17. 基存储卡的音乐播放器v0.2
  18. Python绘制指数加权平均线
  19. 【BZOJ3893】【Usaco2014 Dec】Cow Jog 乱搞
  20. 深度学习笔记(五) 代价函数的梯度求解过程和方法

热门文章

  1. 从春秋战国学习企业管理——管仲
  2. ettercap使用
  3. ubuntu软件源配置
  4. 计算机科学视频观后感,【计算机科学与技术学院】世说新语观后感
  5. python+wordcloud+jieba实现制作词云
  6. L1-007 念数字 (10 分)
  7. 批量去掉或替换文本中的换行符(notepad++、sublime text)
  8. win10下载配置Maven到本地
  9. SpyBot - Search Destroy 1.6.0.30 Final
  10. 微信小程序 - weui的引入使用方法