首页 / 软件开发 / C++ / RGB565,RGB24和RGB32的量化压缩与量化补偿
RGB565,RGB24和RGB32的量化压缩与量化补偿2013-05-27关于RGB565,RGB555, RGB888,RGB32的转换,在我的前一篇博文中我已经介绍过了关于RGB565->RGB888的步骤和思想。今天上午又研究了一个上午,就谢了下来,希望能给需要帮助的哥们一点小小指导,当然了..也期待着高手过来拍砖。关于RGB的一点介绍:RGB色彩模式(也翻译为“红绿蓝”,比较少用)是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。RGB语法:( red,green,blue ) 参数red:integer类型,指定颜色中的红色分量强度,有效值在0到255之间;green:integer类型,指定颜色中的绿色分量强度,有效值在0到255之间;blue:integer类型,指定颜色中的蓝色分量强度,有效值在0到255之间返回值Long。函数执行成功时返回由指定分量确定的颜色,用长整数表示。发生错误时返回-1。如果任何参数的值为NULL,RGB()函数返回NULL。 用法RGB()函数使用下述公式计算表示颜色的长整数:65536 *Blue + 256 * Green+Red其中,Blue代表蓝色分量,Green代表绿色分量,Red代表红色分量。各分量中,数值越小,亮度越低,数值越大,亮度越高。下面就言归正传了:就RGB各种不同位数的存储方式在我的博客http://3417300.blog.51cto.com/3407300/860523中可以找到,在这我就不再累赘了。就RGB888->RGB565而言:其转换的具体思路如下:(注:只代表个人的方法)1.取RGB888中第一个字节的高5位作为转换后的RGB565的第二个字节的高5位2.取RGB888中第二个字节的高3位作为转换后的RGB565第二个字节的低3位3.取RGB888中第二个字节的第4--6位,作为转换后的RGB565第一个字节的高3位4.取RGB888中第二个字节的第三个字节的高5位作为转换后的RGB565第一个字节的低5位就RGB565->RGB888而言:RGB565的存储方式为:R4 R3 R2 R1 R0 G5 G4 G3 G2 G1 G0 B4 B3 B2 B1 B01.取RGB565第一个字节中低5位作为RGB888的高5位2.取RGB565第二个字节中的低3位,将其左移5位,作为RGB888第二个字节的高5位3.取RGB565第一个字节的高3位将其右移3位,作为RGB888第二个字节的4--6位4.取RGB565第二个字节中的高5位作为RGB888第三个字节。细心地哥们一定会发现如果我们是低位往高位上转的话,就存在一些数据精度的丢失问题,在网上查了写资料,借鉴了一下别人的方法;所谓的量化补偿,