
客户在使用 TouchGFX开发 GUI应用的时候, 需要很多的图片资源来呈现友好的人机交互功能, 因此外扩了一个 FLASH来存储图片资源. 在软件研发后期发现现有的 FLASH存储空间不够, 因此提出是否可以使用 TouchGFX来减少图片资源的存储空间且实现同样的 UI效果.![]() 01调研 * _1 P7 N! G3 @/ O' a5 }8 j , u- O. ]$ o2 ^/ @' c! A # 在硬件方面 MCU 的图像处理加速器DMA2D 中的调色板的颜色格式 , 支持 L8 格式的图层之间的渲染:2 m8 h3 D. E4 S" }2 T8 j5 e7 s ![]() # 从软件方面 ; a; i7 L o8 x2 a 最新的 TouchGFX4.12.3 开始, 可以利用了 DMA2D 的调色板功能对图片的资源进行优化 . # 比如下图(宽 x 高=200x200) / S" {: v4 {6 q- x: y 1. 这幅图是由 256 种颜色组成的. 2. 且每种颜色都针对图像进行了优化. 3. 256 种索引颜色中的每一种都是 24 位颜色. ![]() + J6 f! A3 }/ o# x, c1 ] 1. L8_ARGB8888 :1 F ~( F" {. B% s 200x200x1byte+256x4byte=41024bytes& ~, q3 {' w9 @ * t2 l7 r/ o- _; R =>200x200 个 8bit 的颜色索引+256 个 32bit% b% e) m" E) e/ e' U V3 h ![]() # V: r" O! ]* i3 d7 R) X 2. ARGB8888 : 200x200x4byte=160000bytes. =>200x200 个 32bit 的颜色 0 G/ n" t1 @+ R: i e- C 在 TouchGFX 中使用 L8 Image ,只需要将 L8 的图片拖入到 TouchGFX Designer 中,然后在Image 页面中选择正确的格式 : J, W( f% S* f* I ![]() 注意 :如果图片超过 256 颜色,转换工具就会报错,因此可以使用图片工具(如 - x' J, k/ }' e* \5 f4 D paint.net/imagemagick)将颜色数减少至少于 256 色 :- S! V7 Y: @/ V G: }$ V Paint.net:1 P6 m& p6 r8 s1 u' @ ![]() ![]() 02结论+ s, U: U$ h9 z. G0 M+ d % c) i2 z4 ?6 v7 g7 g* k+ q 6 }9 f0 e) @% k( S5 L$ I% O* q1 @ 图像使用 L8 格式时占用的 flash 大小显著低于标准 24 位格式(RGB888)的原始图像。下表列出了这三种不同调色板格式的具体图像的 flash 使用情况(图片分辨率 200x200): ![]() 4 R i# l* U; ?0 T0 r8 {9 g/ L 综上可以看出,采用 TouchGFX4.12.3+L8 格式 :0 K' K( z$ d) u4 z' M; o( k . c# \# Q2 A5 z0 e/ R 1. 相比较 ARGB8888 像素格式, L8 大幅降低了资源文件的大小, 从而降低对存储芯片的需求 .- G& t. D7 L. [1 z7 V/ | x% @ 2. 同时由于图片像素信息大幅减少,读写一张图片的速度也大大提高, 也提高了系统实时性能.% o) g9 |. P# C8 b2 g" u # c+ W5 O6 N3 `; S. D! f 03处理 * E. m, q' L/ F. G, Y4 w( }3 i 因此我们建议客户选择使用 TouchGFX4.12.3+L8 的功能,通过重新优化部分资源文件,减少图片资源的存储空间来实现客户的 UI 效果,并且改善了系统的实时性能.4 H9 `8 O/ O$ k0 Q ` |
学习![]() |
【STM32H745I-DISCO】基于TouchGFX的工业控制器界面设计
【STM32L562E-DK】健康手环基础界面开发(二)—— GUI移植
TouchGFX应用移植自定义屏幕
【GUI板免费申请活动】【圣诞GUI】使用F746-DISO基于TouchGFX的圣诞树
【管管推荐】基于STM32-GUI经验分享篇
TouchGFX 4.23:支持矢量字体,节省Flash,更丰富的UI!
【STM32H7S78-DK】汽车仪表系统
【STM32H7S78-DK评测】TouchGFX (QR Code)二维码生成器
【STM32H7S78-DK评测】-5 LVGL&DMA2D DEMO测试
【STM32H7S78-DK评测】有点艰难的亮屏