求RGB565转8位灰度的算法解决办法
求RGB565转8位灰度的算法
哪位有RGB565转8位灰度的算法,给小弟一份,最好是纯C的.
我整了一天,总是不对.
多谢了
------解决方案--------------------
好像有个公式吧,直接套公式就行,公式忘记了……
------解决方案--------------------
转,参考
void TranColor(char * buffer,char R,char G ,char B)
{ unsigned short color;
memset(buffer,0,4);
switch (ColorIndex)
{ case RGB410:
buffer[0] = Get16ColorIndex(B,G,R);
break;
case RGB555:
color = (((R> > 3)&0x1f) < <10)+(((G> > 3)&0x1f) < <5)+((B> > 3)&0x1f);
memmove(buffer,&color,2);
break;
case RGB565:
color = (((R> > 3)&0x1f) < <11)+(((G> > 2)&0x3f) < <5)+((B> > 3)&0x1f);
memmove(buffer,&color,2);
break;
case RGB888:
case RGB8888:
buffer[0]=R;
buffer[1]=G;
buffer[2]=B;
break;
}
}
哪位有RGB565转8位灰度的算法,给小弟一份,最好是纯C的.
我整了一天,总是不对.
多谢了
------解决方案--------------------
好像有个公式吧,直接套公式就行,公式忘记了……
------解决方案--------------------
转,参考
void TranColor(char * buffer,char R,char G ,char B)
{ unsigned short color;
memset(buffer,0,4);
switch (ColorIndex)
{ case RGB410:
buffer[0] = Get16ColorIndex(B,G,R);
break;
case RGB555:
color = (((R> > 3)&0x1f) < <10)+(((G> > 3)&0x1f) < <5)+((B> > 3)&0x1f);
memmove(buffer,&color,2);
break;
case RGB565:
color = (((R> > 3)&0x1f) < <11)+(((G> > 2)&0x3f) < <5)+((B> > 3)&0x1f);
memmove(buffer,&color,2);
break;
case RGB888:
case RGB8888:
buffer[0]=R;
buffer[1]=G;
buffer[2]=B;
break;
}
}