ColorTextView(随视频帧变化颜色的TextView)

本文介绍了如何创建一个ColorTextView,使其颜色随视频帧变化。通过使用Android的PorterDuffXferMode进行图片合成,实现TextView颜色动态调整。接着探讨了图片模糊的实现,包括高斯模糊的不同方案,如FastBlur、RenderScript和优化方法。最后讨论了视频帧的提取策略,如MediaMetadataRetriever、TextureView和GLSurfaceView,并提出了优化建议,如使用PBO加速glReadPixels()操作。
摘要由CSDN通过智能技术生成

要实现的效果
这里写图片描述

图片颜色提取

1.一开始打算先做个静态的:
我需要两样东西,一张素材图片,一张透明背景文字图片,
素材图片这里写图片描述
进行合成:最后出现的效果图
这里写图片描述
,然后将合成。那具体要怎么合成呢,Android提供现成的合成方案。
PorterDuffXferMode,他合成效果有一个经典的图片
这里写图片描述
简单的说下这个的原理,她合成是符合一系列计算公式的
就举例SRC_OVER和来说,
SRC_OVER:[Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc]
分别从透明度和颜色说起:
透明又分2种情况
(1)在SRC不透明的地方,Sa + (1 - Sa)*Da =》 Sa,也就是遵循SRC图的透明度
(2)在SRC透明的地方,Sa + (1 - Sa)*Da =》 Da,也就是遵守DC的透明度
而颜色又分为以下几种情况
Src(蓝色图)有颜色的地方:
(1)没有重合的部分Sc + (1 - Sa)*Dc =》 Sc (2)和蓝色图(Sc)和黄色图(Dc)重合部分则Rc = Sc + (1 - Sa)*Dc =》 Rc = Sc;也就是不管重合不重合都是以Sc为准,就和他的名字一样,SrcOver就是源图(蓝色图)在上层
Src没有颜色的地方:Sc + (1 - Sa)*Dc =》Dc,就是按照Dc(蓝色图的颜色)
其他地方也一样

CLEAR[0, 0]
SRC:[Sa, Sc]
DST:[Da, Dc]
SRC_OVER:[Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc]
DST_OVER:[Sa + (1 - Sa)*Da, Rc = Dc + (1 - Da)*Sc]
SRC_IN:[Sa * Da, Sc * Da]
DST_IN:[Sa * Da, Sa * Dc]
SRC_OUT:[Sa * (1 - Da), Sc * (1 - Da)]
DST_OUT:[Da * (1 - Sa), Dc * (1 - Sa)]
SRC_ATOP:[Da, Sc * Da + (1 - Sa) * Dc]
DST_ATOP:[Sa, Sa * Dc + Sc * (1 - Da)]
XOR:[Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc]
DARKEN:[Sa + Da - Sa*Da, Sc*(1 - Da) &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值