我有 2 个字节以 8 位格式表示颜色
MSB LSB
01234567
RRGGBB
位 0 和 1 是垃圾。
要混合两种颜色,我应该只平均每种颜色的位数吗?
R1 = ( C1 ^ 00110000B ) >> 4;
G1 = ( C1 ^ 00001100B ) >> 2;
B1 = ( C1 ^ 00000011B );
R2 = ( C2 ^ 00110000B ) >> 4;
G2 = ( C2 ^ 00001100B ) >> 2;
B2 = ( C2 ^ 00000011B );
R3 = avg( R1 , R2 ) << 4;
G3 = avg( G1 , G2 ) << 2;
B3 = avg( B1 , B2 );
C3 = R3 + G3 + B3
其中C1
是第一种颜色,C2
是第二种颜色,是C3
混合颜色,^
是按位与,>>
是按位右移,<<
是按位左移,xxxxxxxxB
是二进制数,avg( a , b )
是算术平均值。