RGB888转换为RGB565格式

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
                1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
                R:255  0xFF G:0    0x00 B:0   0x00

RGB565用unsigned short 16位字节存储

r7 r6 r5 r4 r3 g7 g6 g5 g4 g3 g2 b7 b6 b5 b4 b3
1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
R: (0xFF &0x1F)<<11 G:(0x00 & 0x3F)<<5 B:(0x00 & 0x1F)
F 8 0 0

主要思路:

  1. R:将RGB888的(R)高5位(R7 R6 R5 R4 R3)与RGB565(r7 r6 r5 r4 r3)相对应,即R值&0x1F(取高5位),然后左移11位——>(R & 0x1F)<<11;
  2. G:将RGB888的(G)高6位(G7 G6 G5 G4 G3 G2)与RGB565(g7 g6 g5 g4 g3 g2)相对应,即G值&0x3F(取高6位),然后左移5位——> (G & 0x3F)<<5;
  3. B:将RGB888的(B)高5位(B7 B6 B5 B4 B3)与RGB565(b7 b6 b5 b4 b3)相对应,即B值&0x1F(取高5位)——> (B & 0x1F);

举例:红色  RGB888格式为(R:255,G:0,B:0  0xFF0000)     ——>  RGB565格式为(0xF800)

代码实现:

//运用宏封装起来:
#define RGB888_To_RGB565(R,G,B)  (uint16_t)((R & 0x1f)<<11|(G & 0x3f)<<5|(B & 0x1f))//调用时:
RGB888_To_RGB565(255,0,0)  //显示红色
RGB888_To_RGB565(0,255,0)  //显示绿色
RGB888_To_RGB565(0,0,255)  //显示蓝色

说明:在stm32控制LCD液晶显示器时,液晶一般用RGB565格式(为了压缩数据节省空间),但我们查到的颜色数值一般都是RGB888格式,所以需要有这一转换过程。

但这种方式并不完美,会丢失一部分颜色数据影响精度,且不能复原,所以还有另一种方案——量化补偿,此处不深究。

RGB888转换为RGB565格式相关推荐

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

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

  2. 24位深的bmp图片转换为16位深RGB565格式的bmp图片源码

    /**24位深的bmp图片转换为16位深RGB565格式的bmp图片**/ #include <iostream> #include <stdio.h> #include &l ...

  3. RGB888转RGB565

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

  4. RGB888 和 RGB565

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

  5. BMP数据转换为RGB565

    本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 作者:JDH 2010-03-09 TFT屏的显示缓存能直接显示RGB565的数据,所以BMP要转换成R ...

  6. 电子书格式怎么在线转换为PDF格式

    电子书格式怎么在线转换为PDF格式,现在很多朋友喜欢用PDF格式的电子书,因为其有纸质书的排版和格局,但实际生活中出现的最多的是TXT等格式的电子书,那如何将其进行转换成PDF格式的呢,下面就由小编来 ...

  7. java pdf 多页转换为png格式的图片

    java pdf 多页转换为png格式的图片  适用于 无论pdf有多少页均可 废话不说,直接上代码 import java.awt.Graphics; import java.awt.image.B ...

  8. R语言ggplot2可视化:应用pivot_longer函数将数据从宽格式转换为长格式、为dataframe的每一列绘制密度图和直方图(堆叠)

    R语言ggplot2可视化:应用pivot_longer函数将数据从宽格式转换为长格式.为dataframe的每一列绘制密度图和直方图(堆叠) 目录 R语言ggplot2可视化:应用pivot_lon ...

  9. 在线qmc0转换mp3工具_如何将M4A格式的音频转换为MP3格式?只需一步搞定

    随着网络技术的发达,会有很多人喜欢在网上下载东西,特别是很喜欢在网上下载音乐,但是下载音乐之后发现是M4A格式?这样用起来很不方便,都喜欢MP3格式的,那么如何将M4A格式的音频转换为MP3格式?今天 ...

  10. MATLAB批量实现dicom转换为bmp格式

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 参考 MATLAB实现dicom转换为png格式 %%MATLAB实现dicom转换为bmp格式 clc;clear;c ...

最新文章

  1. 北斗芯片服务器,北斗芯片:GPS定位系统,正是再见!你期待吗?
  2. Linux Shell脚本专栏_批量主机远程执行命令脚本_08
  3. mysql数据表的创建-数据类型
  4. CVPR2021|引入记忆模块,突破长距离依赖视频预测的性能瓶颈
  5. 《天天数学》连载24:一月二十四日
  6. java xframeoptions,Header:X-Frame-Options开启与关闭方法
  7. img标签 三种获取数据方式
  8. Rust 生命周期太难学、最想实现与 C++ 互操作,Rust 2020 调查报告发布!
  9. 【C#小知识】C#中一些易混淆概念总结(八)---------解析接口
  10. 深入浅出看懂AlphaGo Zero (文章最后有原AlphaGo Zero论文地址)
  11. ubuntu服务器系统分区大小,服务器Ubuntu系统分区教程
  12. CS1.6自定义游戏中的H菜单和设置菜单,增加一键买枪功能
  13. 个人档案php源码,php人事档案管理系统
  14. Linux系统使用Tomcat部署项目图片验证码不显示问题
  15. Hdu4747 Mex 递推
  16. linux常用命令大全,建议收藏
  17. 详解 Java 常用的四种锁机制优缺点
  18. python给ppt表格加边框_带你用Python玩转PPT
  19. 食品超声波设备的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  20. 使用linux的gpio点亮imx6ull的led灯

热门文章

  1. 敏捷开发模式下的质量管理
  2. Java问卷调查系统
  3. ESP32使用百度语音合成 实现文字转语音播放
  4. 阿铭Linux_网站维护学习笔记201903022
  5. 机器学习(周志华)学习笔记(二)
  6. 阿里云短信接口方法使用
  7. 2022张宇考研基础30讲 第六讲 中值定理
  8. UG+PRESSCAD五金连续模 成型模 复合模具设计视频教程
  9. web网页设计实例作业 我的家乡- 达州(4页) HTML+CSS+JavaScript dreamweaver作业静态HTML网页设计模板
  10. 爬取12306火车票信息