21
2017
08

RGBA转RGB

上一篇中了解了混合模式“正片叠底”的原理和实现方式。

应用中遇到一个问题,如果颜色包含alpha通道,且alpha值小于1,如何实现混合。

https://en.wikipedia.org/wiki/Alpha_compositing

使用flash软件进行测试,经过分析,可以这样实现:先将RGBA图像转为RGB图像,然后就可以按原来的方式混合了。

以下来源于:RGBA 转 RGB

  1. 将 R,-G-B-A数据归一化, 记为:Source.R, Source.G, Source.B, Source.A ;

  2. 提供一个背景色,但同时也应归一化;比如白色背景BGcolur = 1;或者黑色背景 BGcolur =0;

  3. 目标数据RGB:
    Target.R = BGcolur *(1-Source.A ) + Source.R*Source.A ;
    Target.G = BGcolur *(1-Source.A ) + Source.G*Source.A ;
    Target.B = BGcolur *(1-Source.A ) + Source.B*Source.A ;

  4. 最后将Target.R,Target.G,Target.B再乘以255。




3.最后将Target.R,Target.G,Target.B再乘以255

« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。