RGB颜色中关于Alpha通道的计算

RGB颜色中关于Alpha通道的计算,第1张

RGB颜色中关于Alpha通道的计算

前景色fgcolor=(r1,g1,b1,alpha)

背景色bgcolor=(r2,g2,b2)

 那么最后显示的颜色为(r2,g2,b2),r2=(r2*(256-a)+r1*alpha)/256,其它颜色一样计算。

java中绘制带有alpha的png图片的时候 先把rgb颜色和alpha值跟当前背景计算一下,然后再用gc的alpha和当前背景色做计算 得到最终显示的颜色。

uint32_t* data = p_color;
uint32_t   len = hor_len / 4;
for (uint32_t i = 0; i < len; i++) {
    uint8_t* p_r = (uint8_t*)data;
    uint8_t* p_g = (uint8_t*)data + 1;
    uint8_t* p_b = (uint8_t*)data + 2;
    uint8_t* p_a = (uint8_t*)data + 3;

    // fgcolor=(r1,g1,b1,alpha)
    // bgcolor=(r2,g2,b2)
    // (r2*(256-a)+r1*alpha)/256
    *p_r = ((*p_r) * (*p_a) / 256);
    *p_g = ((*p_g) * (*p_a) / 256);
    *p_b = ((*p_b) * (*p_a) / 256);
    printf("0x%02x,",*p_a);
    data ++;
}
puts("");

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5574488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存