STM32U59系列用色阶来显示彩色位图

1. 引言

此需求由某客户提出,需要用指定颜色的色阶替换原始位图的颜色来显示彩色位图。

2. 操作方法

STM32U59 系列单片机集成的 GPU2D 外设具有将彩色(RGB24)转换为纯亮度格式(L8),以及将原始 Alpha 信息(A8)配合指定颜色(RGB24)重新生成彩色(RGB24)的功能。我们可以先将原始位图像素彩色信息转换为 L8 格式存入临时缓冲,再利用 GPU2D 将此临时缓冲数据按照 A8 像素格式,配合指定的颜色进行渲染生成色阶,实现原始位图像素从彩色到色阶的转换。

2.1. 将原始位图(RGB24)转换为 L8

// 创建 L8 格式缓冲区
unsigned char convertBuffer[RESX*RESY] = {0}
// 绑定目标缓冲区
nema_bind_dst_tex((uintptr_t)convertBuffer, RESX, RESY, NEMA_L8, -1)
// 设置 blend 模式
nema_set_blend_blit(NEMA_BL_SRC)
// 绑定源缓冲区(原始位图)
nema_bind_src_tex((uintptr_t)source, RESX, RESY, NEMA_BGR24, -1, 
NEMA_FILTER_BL)
// 开始渲染
nema_blit(0, 0)

下图为原始位图,上述操作生成的右图只保留亮度信息(L8)
在这里插入图片描述

2.2. 指定颜色并按照 A8 格式再次渲染为灰阶

// 设置渲染模式为 NEMA_BLOP_MODULATE_A
nema_set_blend_blit(NEMA_BL_SIMPLE | NEMA_BLOP_MODULATE_A)
// 指定目标颜色 ALPHA 值
nema_set_const_color(nema_rgba(0x00, 0x00, 0x00, 0xFF))
// 指定目标颜色 RGB
nema_set_tex_color(nema_rgba(0x00, 0xFF, 0x00, 0x00))
// 按照 A8 解析上一步获得的 L8 缓冲
nema_bind_src_tex((uintptr_t)convertBuffer, RESX, RESY, NEMA_A8, -1, 
NEMA_FILTER_BL | NEMA_TEX_BORDER)
// 开始渲染
nema_blit(0, 0)

下图由左图的 Alpha 信息配合指定的颜色生成,可以指定任意颜色
在这里插入图片描述
完整代码请参考附件工程。

3. 小结

本文介绍了一种基于 STM32 GPU2D 外设的色彩格式转换功能,通过它来实现在屏幕上按灰阶(黑白、或其他指定颜色)显示彩色位图的方法,供有需要的 STM32 用户参考。

文档中所用到的工具及版本
IAR v8.50.6
NeoChromSDK_V1.0.1
STM32CubeU5_V1.2.0RC4
LAT 中的附件
LAT 用色阶来显示彩色位图_v0.1.7z


本文档参考ST官方的《【应用笔记】LAT1291+用色阶来显示彩色位图(PDF)》文档。
参考下载地址:https://download.csdn.net/download/u014319604/89006270

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-23 14:02:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-23 14:02:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-23 14:02:01       87 阅读
  4. Python语言-面向对象

    2024-03-23 14:02:01       96 阅读

热门阅读

  1. Android开发之CardView概述与分析

    2024-03-23 14:02:01       42 阅读
  2. Linux初学(五)正则表达式

    2024-03-23 14:02:01       43 阅读
  3. Ubuntu下采用VSCode调试C/C++ (1)

    2024-03-23 14:02:01       38 阅读
  4. 并行流实现两个double [][] 数组相加,加快速度

    2024-03-23 14:02:01       34 阅读
  5. 什么情况下要做艾森克人格测试?

    2024-03-23 14:02:01       37 阅读
  6. 【PostgreSQL的指标采集工具--pgmetrics】

    2024-03-23 14:02:01       37 阅读
  7. Oracle增加节点标准方法, /u01 损坏的处理

    2024-03-23 14:02:01       33 阅读
  8. 面试宝典:MySQL-深度分析可重复读原理

    2024-03-23 14:02:01       37 阅读