
客户在使用 TouchGFX开发 GUI应用的时候, 需要很多的图片资源来呈现友好的人机交互功能, 因此外扩了一个 FLASH来存储图片资源. 在软件研发后期发现现有的 FLASH存储空间不够, 因此提出是否可以使用 TouchGFX来减少图片资源的存储空间且实现同样的 UI效果.9 R4 @! i7 L2 g# }3 O![]() 01调研 $ q+ ]& Z) c* L' Z, K6 r+ h- f # 在硬件方面 MCU 的图像处理加速器DMA2D 中的调色板的颜色格式 , 支持 L8 格式的图层之间的渲染:4 }( J6 h+ p4 ?& ` ![]() # 从软件方面 ; p5 p# F0 r2 Q& G. G6 r- y" p$ A % M+ Q: }% M9 r7 h8 I 最新的 TouchGFX4.12.3 开始, 可以利用了 DMA2D 的调色板功能对图片的资源进行优化 . I: T( e8 ~' i P7 {) ^, i6 [% B * [9 f0 n m, U( @# Z( S) F* \ # 比如下图(宽 x 高=200x200) 1. 这幅图是由 256 种颜色组成的. 2. 且每种颜色都针对图像进行了优化.7 t- t, m3 w$ Y0 L& F+ O& {/ O2 ^ 3. 256 种索引颜色中的每一种都是 24 位颜色. ![]() $ Q' K3 [% c5 D. p8 q6 G 1. L8_ARGB8888 :2 U- }, h; v% v+ E1 d 200x200x1byte+256x4byte=41024bytes4 g4 _3 I5 J- J$ Q/ g& w - V H( u: J2 @ =>200x200 个 8bit 的颜色索引+256 个 32bit' g2 j( V' ~5 W ![]() . }" d6 L1 o' U! | 2. ARGB8888 :7 \9 Q" N: Q/ j# a$ M" p 200x200x4byte=160000bytes.( b; U! M! I* n7 F$ G- n =>200x200 个 32bit 的颜色6 l) k4 I0 z3 l; Q, l% I' q 7 T \7 {3 {9 q: v9 B$ t& x3 I 在 TouchGFX 中使用 L8 Image ,只需要将 L8 的图片拖入到 TouchGFX Designer 中,然后在Image 页面中选择正确的格式 :* r% Q, A+ Y% M/ B# ^, J/ A9 |0 z9 i ![]() 注意 :如果图片超过 256 颜色,转换工具就会报错,因此可以使用图片工具(如 paint.net/imagemagick)将颜色数减少至少于 256 色 :) s- |/ U7 v9 L. r) I/ n . |/ e0 A: j: R9 ?4 j Paint.net:# N2 V3 h2 [+ R9 P ![]() ![]() 02结论 图像使用 L8 格式时占用的 flash 大小显著低于标准 24 位格式(RGB888)的原始图像。下表列出了这三种不同调色板格式的具体图像的 flash 使用情况(图片分辨率 200x200): ![]() . a: [9 G! j6 v5 t* Z/ Y 综上可以看出,采用 TouchGFX4.12.3+L8 格式 :' k C8 h8 E( S- F1 M9 H$ y* z- C & o% R- N5 z- l3 V * g8 V9 I4 A! @! D1 r 1. 相比较 ARGB8888 像素格式, L8 大幅降低了资源文件的大小, 从而降低对存储芯片的需求 .3 q v1 O& y+ i6 Q 2. 同时由于图片像素信息大幅减少,读写一张图片的速度也大大提高, 也提高了系统实时性能. 03处理 因此我们建议客户选择使用 TouchGFX4.12.3+L8 的功能,通过重新优化部分资源文件,减少图片资源的存储空间来实现客户的 UI 效果,并且改善了系统的实时性能. |
学习![]() |
【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评测】有点艰难的亮屏