rgb888与rgb565转换的影响
来源:互联网 发布:图解网络硬件 kindle 编辑:程序博客网 时间:2024/04/30 19:44
在公司项目里发现了RGB888与RGB565转换出现的问题:
我要做的工作是在画板上涮上一层底色,使用的是OpenGL里的glClearColor()函数,从文件中读出的颜色值是0x00c0c0d0[0, 192, 192, 208],以unsigned int接收,以除以255.0f来提取RGB的值,最后通过glClearColor(R,G,B,A)刷上底色。之后再贴上图片,关键在底色和图片中的背景颜色值是相同的,都是0x00c0c0d0,最后描画出来这两部分颜色上有明显不同,截图取颜色值发现底色是[189, 190, 206],图片上背景是[198, 195, 214]明显图片的背景偏差比较大,后来请教了别人之后,知道造成这种现象的原因就是因为RGB888与RGB565转换过程中精度的丢失造成的~我的颜色值精度丢失是在除以255.0f时造成的,而图片是通过OpenGL的纹理生成图片过程中经过了RGB888与RGB565的转换造成较大的精度丢失。这里贴上两者转换原理:
1、24bit RGB888 到 16bit RGB565 的色彩转换-->这过程属于位数的压缩,造成精度的丢失
转换的原理是24bit RGB888取高位填16bit RGB565的位数,如:
24bit RGB888:R7 R6 R5 R4 R3 R2 R1 R0 G7 G6 G5 G4 G3 G2 G1 G0 B7 B6 B5 B4 B3 B2 B1 B0
16bit RGB565:R7 R6 R5 R4 R3 G7 G6 G5 G4 G3 G2 G1 B7 B6 B5 B4 B3
2、16bit RGB565 -> 24bit RGB888 的转换-->空缺部分 由0填补
16bit RGB656 R4 R3 R2 R1 R0 G5 G4 G3 G2 G1 G0 B4 B3 B2 B1 B0
24ibt RGB888 R4 R3 R2 R1 R0 0 0 0 G5 G4 G3 G2 G1 G0 0 0 B4 B3 B2 B1 B0 0 0 0
代码实例:
1、24bit RGB888 到 16bit RGB565
bit16 rgb888_to_rgb565(bit32 rgb888)
{
bit16 r = (rgb888 & 0x00FF0000) >> 19;
bit16 g = (rgb888 & 0x0000FF00) >> 10;
bit16 b = (rgb888 & 0x000000FF) >> 3;
return ((r << 11) | (g << 5) | b) ;
}\
2、16bit RGB565 -> 24bit RGB888
bit32 rgb565_2_rgb888(bit16 rgb565)
{
// 1,
UInt32 r = (rgb565 & 0xF800) >> 11;
UInt32 g = (rgb565 & 0x07E0) >> 5;
UInt32 b = rgb565 & 0x001F;
// 2,
r = r << 3 | r >> 2;
g = g << 2 | g >> 4;
b = b << 3 | b >> 2;
return r << 16 | g << 8 | b ;
}
- rgb888与rgb565转换的影响
- RGB565 与 RGB888的相互转换
- RGB565 与 RGB888的相互转换
- RGB565和RGB888的转换
- RGB565 与RGB888的区别
- RGB888和RGB565互相转换
- RGB565,RGB555, RGB888,RGB32转换
- RGB565 & RGB888
- RGB888->RGB565
- RGB888->RGB565
- RGB888->RGB565
- RGB565,RGB888
- RGB888->RGB565
- RGB888转换为RGB565颜色值
- RGB888->RGB565->RGB888
- 一组rgb转换函数,支持rgb565/rgb888/xrgb8888之间的数据转换
- Mini2440之LCD的RGB888和RGB565
- 转: RGB565、RGB888互相转换原理和代码
- 周韦彤MFC IDC
- Atmega128L控制ADS7816进行AD采集的子程序(AVR单片机)
- 解决eclipse中Android SDK Manager更新慢和部分无法显示System Image镜像问题
- 【HTML5&CSS3进阶04】CSS3动画应该如何在webapp中运用
- LeetCode:Subsets
- rgb888与rgb565转换的影响
- 从QProcess说开来(一)
- Cocos2d-x中CCLabel字体类
- Web视觉设计师培训视频教程
- SQLHelper
- 店庆,巨献狂让利,优惠到让你尖叫!
- HTML5网页如何让所有的浏览器都能识别HTML5标签样式
- selenium_第一个脚本_登录新浪微博
- 编码规范