RGB565与RGB888颜色互相转换
最编程
2024-01-13 08:09:28
...
在计算机中图像基本是以RGB888格式显示的,24位图每个像素保存了32bit的数据,即RGB888+Alpha,Alpha就是半透明填充字节。对于真彩的图像而言,肉眼在16bit的时候已经难以分辨了,有些时候,可以将RGB888转换为RGB565来存储,减少了存储器的容量的同时,降低了数据量;在显示的时候,再次把RGB565转换为RGB888,实现数据宽度的匹配。
转换的思想:颜色的低位增加或者移除。
(1)、RGB888->RGB565
方法只要提取相应单色高位即可(R5 G6 B5),但会导致低位的缺失,影响精度,而且无法恢复。
(2)、 RGB565->RGB888
填充相应单色低位即可。
RGB888用unsigned int 32位字节存储
RGB565用unsigned short 16位字节存储
示例代码:
/*
RGB565转RGB888 :
高位对齐,低位补0
*/
u32 RGB565_TO_RGB888(u16 rgb565)
{
u8 r,g,b;
u32 rgb888=0;
r=(rgb565>>11)&0x1F;// 11 1111
g=(rgb565>>5)&0x3F;
(rgb565>>0)&0x1F; =
rgb888=(r<<19)|(g<<10)|(b<<3);
return rgb888;
}
/*
RGB888转RGB565 :
转换颜色去掉低位,高位保留
*/
u16 RGB888_TO_RGB565(u32 rgb888)
{
u8 r,g,b;
u16 rgb565=0;
r=rgb888>>16;
g=rgb888>>8;
b=rgb888>>0;
3; //分量5 =
2; //分量6 =
3; //分量5 =
rgb565=r<<11|g<<5|b<<0;
return rgb565;
}
下一篇: 用 Python 制作一款颜色转换小工具
推荐阅读
-
实际应用:用Dayjs轻松实现JS日期与字符串的互相转换(格式为YYYY-MM-DD)
-
在JavaScript中实现数字与罗马数字的互相转换:从1到V的整数转为罗马数字表示法
-
转换详解:YUV420到YUV444的转换方法,以及YUV420和YUV444的数据读取、储存技巧,深入解析YUV颜色空间的显示与播放功能
-
十六进制颜色与颜色之间转换的 C# 实现
-
算法分析:阿拉伯数字与罗马数字的互相转换
-
如何使用Python实现字母与编号的互相转换操作
-
在Java中实现数字与字母的互相转换
-
JavaScript 阿拉伯数字与中文数字互相转换
-
如何在JS中实现字符串与数字之间的互相转换:将数组中的所有字符串转换为数字
-
np.ndarray与Eigen::Matrix之间的互相转换