客户在使用 TouchGFX开发 GUI应用的时候, 需要很多的图片资源来呈现友好的人机交互功能, 因此外扩了一个 FLASH来存储图片资源. 在软件研发后期发现现有的 FLASH存储空间不够, 因此提出是否可以使用 TouchGFX来减少图片资源的存储空间且实现同样的 UI效果. 01调研2 n6 ]$ ]) m/ Z7 n2 d b 3 J L+ m8 O' F6 V. [2 Y+ P # 在硬件方面7 [1 [3 w* ?- j' y: n8 S MCU 的图像处理加速器DMA2D 中的调色板的颜色格式 , 支持 L8 格式的图层之间的渲染: - b) P" ^4 K" V- `7 D # 从软件方面 最新的 TouchGFX4.12.3 开始, 可以利用了 DMA2D 的调色板功能对图片的资源进行优化 . , i* O. ~8 r& m5 B# E ?0 Q* } # 比如下图(宽 x 高=200x200) $ }# }, v, J' p$ R, t7 s 1. 这幅图是由 256 种颜色组成的. 2. 且每种颜色都针对图像进行了优化.1 ?# k4 u+ a3 H3 C 3. 256 种索引颜色中的每一种都是 24 位颜色.& C6 w' R: B9 q! Q 为了在 LCD 上显示这张图, TouchGFX Designer 在生成资源文件时,生成的资源文件大小: j2 ~( J, S' b6 B2 c / h+ x! w) _0 B* R( V 1. L8_ARGB8888 : 200x200x1byte+256x4byte=41024bytes =>200x200 个 8bit 的颜色索引+256 个 32bit p+ e7 A0 e! {, g4 u1 @ 2. ARGB8888 : 200x200x4byte=160000bytes.. L6 C5 x+ w9 Z b =>200x200 个 32bit 的颜色5 U L9 H5 d* r0 U B8 i+ B) d0 ^# u3 O ( p3 u3 P+ x' S% ]4 ~ 在 TouchGFX 中使用 L8 Image ,只需要将 L8 的图片拖入到 TouchGFX Designer 中,然后在Image 页面中选择正确的格式 : 注意: 如果图片超过 256 颜色,转换工具就会报错,因此可以使用图片工具(如: h9 m" l& P; d; d8 A2 m 1 }/ M( O7 o9 Q, K , f8 W: e9 P3 R% [* L paint.net/imagemagick)将颜色数减少至少于 256 色 : 5 y& o3 l' M4 ]7 t+ r9 D1 W# ~ : K2 \' @- ~; A$ ^ _: J: u1 { Paint.net:3 t6 g: O- `/ u3 B Image Magick (www.imagemagick.org): 02结论! Q: P1 e, w: I/ j0 j9 \ 图像使用 L8 格式时占用的 flash 大小显著低于标准 24 位格式(RGB888)的原始图像。下表列出了这三种不同调色板格式的具体图像的 flash 使用情况(图片分辨率 200x200):5 j/ X" K7 k5 B4 Y& D: J' m0 q 由于 TouchGFX 对于 L8 格式还可以支持 L8_ARGB8888,因此可以与 ARGB8888 等格式的图像进行混合渲染,因此特别适合作为图标等颜色数少但是素材丰富的应用.* N5 t1 c2 O$ o& X' l9 y . G. ^( D1 y) z9 |9 |) i) S 综上可以看出,采用 TouchGFX4.12.3+L8 格式 :9 f( c4 b* h/ j 1. 相比较 ARGB8888 像素格式, L8 大幅降低了资源文件的大小, 从而降低对存储芯片的需求 . 2. 同时由于图片像素信息大幅减少,读写一张图片的速度也大大提高, 也提高了系统实时性能.: f0 M' c3 D# u* c7 G" o8 r/ N, R & b) ?4 l; G: K" J0 f0 D 03处理# j; i4 k: S7 s 因此我们建议客户选择使用 TouchGFX4.12.3+L8 的功能,通过重新优化部分资源文件,减少图片资源的存储空间来实现客户的 UI 效果,并且改善了系统的实时性能., \( o5 R8 @. t* | F% g |
打卡,学习!+ {% F' [9 J; p |
[NUCLEO-C031C6评测] 驱动LCD 第三步 显示颜色块
STM32F3DISCOVERY + UCGUI3.90A的移植(源码+视频)
STM32MP135F-DK开发板评测-Linux系统下基于gtk的计算器应用
【经验分享】stm32基于TouchGFX的GUI开发(八):STM32H743+驱动SPILCD屏幕(ST7789V2)
TouchGFX 4.23:支持矢量字体,节省Flash,更丰富的UI!
STM32MP135F-DK开发板评测-Linux系统下的GTK计算器
【STM32U599】2.写个手表菜单
STM32MP135F-DK开发板评测-裸机LTDC亮屏
基于STM32GUI TouchGFX 屏幕切换功能经验分享
【STM32U599】1.初步尝试