真彩色是指图像中的每个像素值都分成R(红)、G(绿)、B(蓝)三个基色分量,每个基色分量直接决定其基色的强度,这样产生的色彩称为彩色。彩色图像是一种用三个或更多字节描述像素的计算机图像存储方式。
普遍认为人眼对色彩的分辨能力大致是一千万色,因此由RGB888形成的图像称作真彩色。RGB888真彩色,每一色光以8位表示,每个通道各有256级阶调,三色光交互增减,RGB三色光能在一个像素上最高显示24位1677万色(256*256*256=16,777,216),这个数值就是电脑中所能表示的最高色彩。
RGB332(3+3+2=8位色):(2^3)*(2^3)*(2^2) =  8*8*4 = 256(256 Color).俗称256色。
RGB555(5+5+5=15位色):(2^5)*(2^5)*(2^5) = 32*32*32 = 32768(32768/1024 = 32,32K Color),俗称32千色。
RGB565(5+6+5=16位色 ):(2^5)*(2^6)*(2^5) = 32*64*32 = 65536(65536/1024 = 64,64K Color),俗称65千色。
RGB666(6+6+6=18位色):(2^6)*(2^6)*(2*6) = 64*64*64 = 262144(262144/1024 = 256, 256K Color).俗称262千色.
RGB888(8+8+8=24位色):(2^8)*(2^8)*(2^8) = 256*256*256 = 16777216(16777216/1024 = 16384,16384K Color ; 16384/1024 = 16 , 16M Color。) 俗称16兆真彩色。
RGB888+8(8+8+8+8=32位色);
除了24位真彩色,现在还出现了32位真彩色(RGB888+8)。32位真彩色并非是2的32次方的发色数,它其实是1677万多色,不过它增加了8位共256阶颜色的灰度,为了方便称呼,就规定它为32位色。它是24位发色数再加上256阶灰度等级。在我们的计算机中图像是以RGB888格式显示图像的,24位图每个像素保存了32bit的数据,即RGB888+Alpha,Alpha就是半透明填充字节……但是对于真彩的图像而言,肉眼在16bit的时候已经难以分辨了,因此,有些时候,可以讲RGB888转换为RGB565来存储,减少了存储器的容量的同时,降低了数据量;在后端显示的时候,再次把RGB565转换为RGB888,实现数据宽度的匹配!!
**总结:低位增加或者移除**一、RGB888->RGB565
方法只要提取相应单色高位即可(R5 G6 B5),但会导致低位的缺失,影响精度,而且无法恢复。
二.RGB565->RGB888
方法只要补充相应单色低位即可(R3 G2 B3)。RGB888用unsigned int 32位字节存储
0 0 0 0 0 0 0 0 R7 R6 R5 R4 R3 R2 R1 R0 G7 G6 G5 G4 G3 G2 G1 G0 B7 B6 B5 B4 B3 B2 B1 B0
                                          RGB565用unsigned short 16位字节存储
R7 R6 R5 R4 R3 G7 G6 G5 G4 G3 G2 B7 B6 B5 B4 B3

1、#define RGB888_RED 0x00ff0000
2、#define RGB888_GREEN 0x0000ff00
3、#define RGB888_BLUE 0x000000ff

4、#define RGB565_RED 0xf800
5、#define RGB565_GREEN 0x07e0
6、#define RGB565_BLUE 0x001f

7、unsigned short RGB888ToRGB565(unsigned int n888Color)
{
unsigned short n565Color = 0;
// 获取RGB单色,并截取高位
unsigned char cRed = (n888Color & RGB888_RED) >> 19;
unsigned char cGreen = (n888Color & RGB888_GREEN) >> 10;
unsigned char cBlue = (n888Color & RGB888_BLUE) >> 3;
// 连接
n565Color = (cRed << 11) + (cGreen << 5) + (cBlue << 0);
return n565Color;
}

8、unsigned int RGB565ToRGB888(unsigned short n565Color)
{
unsigned int n888Color = 0;
// 获取RGB单色,并填充低位
unsigned char cRed = (n565Color & RGB565_RED) >> 8;
unsigned char cGreen = (n565Color & RGB565_GREEN) >> 3;
unsigned char cBlue = (n565Color & RGB565_BLUE) << 3;
// 连接
n888Color = (cRed << 16) + (cGreen << 8) + (cBlue << 0);
return n888Color;
}

RGB888与RGB565相关推荐

  1. RGB888转RGB565

    今天在REVIEW代码的时候,发现了这样一个宏定义: #define COLOR_TO_MTK_COLOR_SIMUL(color) ((((color) >> 19) & 0x1 ...

  2. RGB888 和 RGB565

    今天作练习,是一个将RGB888的图像转换成RGB565在ARM 的 LCD上显示的小程序.里面的移位来移位去的完全不了.先是不管三七二是一,把程序运行了一下.图像是一行一行刷出来的,点是一个一个一行 ...

  3. 使用neon实现RGB888转RGB565

    RGB888转RGB565使用C代码来实现是非常简单的,但就是比较耗时,使用NEON很容易实现这个功能,而且速度还能有很大的提升,以下是将16个RGB888像素点转为RGB565的代码 uint8x1 ...

  4. RGB888和RGB565屏幕显示效果区别

    很想测试一下RGB888和RGB565屏幕的显示区别 用image2lcd把图片转换一下, 屏幕分辨率为800x480 1 以下是对比: 左边RGB888 右边RGB565

  5. RGB888与RGB565颜色

    颜色名称 RGB888原色 RGB565还原色 英 RGB888[Hex] RGB888_R[Hex] RGB888_G[Hex] RGB888_B[Hex] RGB565[Hex] RGB565_R ...

  6. RGB565颜色表,附RGB888转RGB565工具,RGB24转RGB565工具

    下载链接   http://download.csdn.net/detail/liquanfeng9227/9893117 工具可以将RGB888颜色值转换成TFT屏用的RGB565颜色值. #def ...

  7. matlab读取RGB888或RGB565像素文件并绘图

    1.matlab下,通过读取txt文件中的RGB888格式的像素文件绘图,并将其转换为RGB565格式后再绘图.代码如下: clear all; close all; a=textread('E:\m ...

  8. RGB565 与 RGB888的相互转换

    本文内容不是完全原创,参考了网上部分精华,做了整理. RGB色彩模式(也翻译为"红绿蓝",比较少用)是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B) 三个颜色通道的变化 ...

  9. RGB565,RGB555, RGB888,RGB32转换

    关于RGB565,RGB555, RGB888,RGB32的转换,在我的前一篇博文中我已经介绍过了关于RGB565->RGB888的步骤和思想.    今天上午又研究了一个上午,就谢了下来,希望 ...

  10. 转: RGB565、RGB888互相转换原理和代码

    转:http://www.xuebuyuan.com/935987.html 背景:在我们的计算机中图像是以RGB888格式显示图像的,24位图每个像素保存了32bit的数据,即RGB888+Alph ...

最新文章

  1. 循环控制-链表反转(与创建链表)
  2. exchange客户端不能正常登陆
  3. x265-bitstream.h
  4. freertos源码详解与应用开发 pdf_互联网企业面试必问Spring源码?搞定Spring源码,看完这篇就够了...
  5. 使用Spring Boot和Spring MVC自定义HttpMessageConverters
  6. python : yield 的工作机制
  7. 混合编程:VS2017 C++调用Python3.X类/对象/函数笔记【Windows】
  8. [转]SOAP 教程
  9. Mysql 时间戳类型使用心得
  10. 中国工业企业数据库(2015年)
  11. java文件传输接口
  12. 10年建模师给想学次世代游戏建模同学的一些忠告,太受益了!
  13. UEFI开发探索101 – PCD探究
  14. 阿里云ECS服务器很多台共用一个公网ip吗?
  15. 收录查询 搜狗收录批量查询工具
  16. 石墨笔记, Onenote 和 Effie 哪个适合单口或脱口秀作者?
  17. 两位末代皇帝的宠物文史小语新浪博客
  18. C语言编程输出象棋棋盘
  19. C语言 | 猜字母小游戏(简单易学)
  20. linux firefox xvfb,持续集成:采用Xvfb+Selenium+Firefox搭建linux服务器下的自动化测试环境...

热门文章

  1. 华为手机解锁码快速申请方式
  2. FreeSwitch基础知识
  3. python xlwt_使用Python和xlwt向Excel文件中写入中文
  4. 《王家视频教程图书馆》
  5. Java实验输出希腊字母表
  6. WLAN 与WIFI的区别?
  7. Solidity编程语言
  8. 测试开发工程师必备技术栈(附详细技术点)
  9. SoilGrid 250米土壤质地数据集
  10. hspice linux 软件,转贴 hspice 在linux系统下的安装