要实现的效果
图片颜色提取
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) &