
客户在使用 TouchGFX开发 GUI应用的时候, 需要很多的图片资源来呈现友好的人机交互功能, 因此外扩了一个 FLASH来存储图片资源. 在软件研发后期发现现有的 FLASH存储空间不够, 因此提出是否可以使用 TouchGFX来减少图片资源的存储空间且实现同样的 UI效果. 01调研; ?$ {( c6 |5 b' d2 P& u $ F9 y+ A3 D" l: U& ^ c% \7 c 1 S( C: Y, G; }7 D3 k # 在硬件方面7 Q& E: `! p4 a5 D8 E; X; ]% ~ MCU 的图像处理加速器DMA2D 中的调色板的颜色格式 , 支持 L8 格式的图层之间的渲染: ![]() ) E3 G& @5 [% L1 U. b # 从软件方面 最新的 TouchGFX4.12.3 开始, 可以利用了 DMA2D 的调色板功能对图片的资源进行优化 . r$ `( a) j! q, \ i+ L4 E8 V8 ` : _3 e+ s9 ?3 [, v+ d1 a # 比如下图(宽 x 高=200x200) * \' E6 A, B4 Y: l$ t$ q- [+ a m2 s; Z! i% Z9 p. R 1. 这幅图是由 256 种颜色组成的.% `2 s8 }2 }- ?: }* s3 I4 C 2. 且每种颜色都针对图像进行了优化.: o9 s2 l6 E8 C$ R 3. 256 种索引颜色中的每一种都是 24 位颜色. ![]() 为了在 LCD 上显示这张图, TouchGFX Designer 在生成资源文件时,生成的资源文件大小:8 O% ]7 P; F/ O' ^ * B4 e# b# x# d4 v; z( N, @6 s 9 z2 u. ?( Q% V7 q# s 1. L8_ARGB8888 : 200x200x1byte+256x4byte=41024bytes# [& D' Q8 \" M0 S# r" r =>200x200 个 8bit 的颜色索引+256 个 32bit ![]() 2. ARGB8888 : 200x200x4byte=160000bytes. =>200x200 个 32bit 的颜色$ ~ M) Z# N4 E* E 8 u3 {2 O( A" S3 a6 r. Q6 E * t: i! [, f4 G 在 TouchGFX 中使用 L8 Image ,只需要将 L8 的图片拖入到 TouchGFX Designer 中,然后在Image 页面中选择正确的格式 : ![]() 注意: 如果图片超过 256 颜色,转换工具就会报错,因此可以使用图片工具(如 1 r$ T, v' S3 e" p. M7 V1 S paint.net/imagemagick)将颜色数减少至少于 256 色 :$ ]* ~; [. n! M6 B' C* n) \7 q8 q / m2 G$ X# q# m8 }7 o& K $ v4 a, M0 t$ |* s& F+ t Paint.net:4 t2 ^8 V5 V$ u: y( H ![]() Image Magick (www.imagemagick.org):. z4 Q0 k2 ~- f) z' g) | ![]() 02结论 图像使用 L8 格式时占用的 flash 大小显著低于标准 24 位格式(RGB888)的原始图像。下表列出了这三种不同调色板格式的具体图像的 flash 使用情况(图片分辨率 200x200):( b$ J: E4 L( D8 d5 x6 a" W/ c- X ![]() 由于 TouchGFX 对于 L8 格式还可以支持 L8_ARGB8888,因此可以与 ARGB8888 等格式的图像进行混合渲染,因此特别适合作为图标等颜色数少但是素材丰富的应用. 综上可以看出,采用 TouchGFX4.12.3+L8 格式 : # E" \- l( r0 O5 r 1. 相比较 ARGB8888 像素格式, L8 大幅降低了资源文件的大小, 从而降低对存储芯片的需求 .( w: N+ ]( m C X5 x 2. 同时由于图片像素信息大幅减少,读写一张图片的速度也大大提高, 也提高了系统实时性能.6 S9 Z$ D' S3 C) Q2 \! E6 K 03处理' }4 ~' C J- ~0 O2 J 5 [) g f0 Q& ?% U, d 因此我们建议客户选择使用 TouchGFX4.12.3+L8 的功能,通过重新优化部分资源文件,减少图片资源的存储空间来实现客户的 UI 效果,并且改善了系统的实时性能. K: r1 y: t5 H/ N |
打卡,学习!) f% i. B5 G* _- i6 h/ t5 ? |
【STM32H745I-DISCO】基于TouchGFX的工业控制器界面设计
【STM32L562E-DK】健康手环基础界面开发(二)—— GUI移植
【STM32L562E-DK】健康手环基础界面开发(一)—— 准备工作
TouchGFX应用移植自定义屏幕
汇编浮点库qfplib移植STM32F769I-DISCO开发板与硬件浮点运算性能测试对比
【GUI板免费申请活动】【圣诞GUI】使用F746-DISO基于TouchGFX的圣诞树
【圣诞专享活动】使用TouchGFX做GUI显示:圣诞快乐&Merry Christmas!
【管管推荐】基于STM32-GUI经验分享篇
STM32F103移植LittlevGUI代码
TouchGFX 4.23:支持矢量字体,节省Flash,更丰富的UI!