真彩色是指图像中的每个像素值都分成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 = (/1024 = 256, 256K Color).俗称262千色. RGB888(8+8+8=24位色):(2^8)*(2^8)*(2^8) = 256*256*256 = (/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 |
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226965.html原文链接:https://javaforall.net
