Language agnostic 8位颜色可以通过平均值进行混合吗?

Language agnostic 8位颜色可以通过平均值进行混合吗?,language-agnostic,colors,color-blending,Language Agnostic,Colors,Color Blending,我有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 =

我有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
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)
是按位右移,
你可以认为颜色是3D空间中的点。“平均”的定义取决于您使用的空间。如果你平均RGB、HSL或其他更“奇异”的东西,你会得到不同的结果

但是,如果您将每种颜色限制为2位,那么这一切都不会有多大影响,您的建议也很好(除非,如注释中所述,您需要
&
,而不是
^
,来屏蔽)


(所谓“平均”我想你的意思是加上位(每种颜色)并除以2(右移)。请注意,如果你重复这样做(例如,平均两幅图像,然后用第三幅图像平均结果,然后用第四幅图像平均结果)然后你最终会得到一些黑色的东西,因为右移向下舍入,所以你会稍微偏向较低的值)。

对于遮罩,你需要
&
,而不是
^