客户在使用 TouchGFX开发 GUI应用的时候, 需要很多的图片资源来呈现友好的人机交互功能, 因此外扩了一个 FLASH来存储图片资源. 在软件研发后期发现现有的 FLASH存储空间不够, 因此提出是否可以使用 TouchGFX来减少图片资源的存储空间且实现同样的 UI效果. 01调研 0 P6 ]* t" j0 [6 f) _ # 在硬件方面 7 K$ v8 f" g+ O MCU 的图像处理加速器DMA2D 中的调色板的颜色格式 , 支持 L8 格式的图层之间的渲染:' v: }/ r, Q% y) }1 [4 T5 q( U% r # 从软件方面 6 n# `% B7 |0 v) _" s ' l0 e9 P0 h3 o8 c2 e 最新的 TouchGFX4.12.3 开始, 可以利用了 DMA2D 的调色板功能对图片的资源进行优化 . / |; S `8 D- k" U$ v # 比如下图(宽 x 高=200x200) 1. 这幅图是由 256 种颜色组成的.9 a% ?; ]# x! I: b( n; }( ^ 2. 且每种颜色都针对图像进行了优化. 3. 256 种索引颜色中的每一种都是 24 位颜色. 1. L8_ARGB8888 : 200x200x1byte+256x4byte=41024bytes 5 a1 `( F0 z" P" r2 x =>200x200 个 8bit 的颜色索引+256 个 32bit0 y$ ^/ P% ?$ u& c' \/ h 4 ~6 x ?2 {' R) g+ _6 o 2. ARGB8888 :7 @% Y/ `* {3 F0 G 200x200x4byte=160000bytes. =>200x200 个 32bit 的颜色 ?$ S& b4 K0 Z: G6 S! C- T# D. Y 在 TouchGFX 中使用 L8 Image ,只需要将 L8 的图片拖入到 TouchGFX Designer 中,然后在Image 页面中选择正确的格式 : 注意 :如果图片超过 256 颜色,转换工具就会报错,因此可以使用图片工具(如 paint.net/imagemagick)将颜色数减少至少于 256 色 :* O1 l' h" l* e o+ I ; n: x7 s# ^1 P* J0 ~9 h; U Paint.net:& k5 N' P. a2 J& v; } 02结论: a# ~6 Y/ A7 }7 G* ]& ]) ` ( Z6 Y( n3 @5 x4 _. d: N 5 s2 {# J# {" j8 S 图像使用 L8 格式时占用的 flash 大小显著低于标准 24 位格式(RGB888)的原始图像。下表列出了这三种不同调色板格式的具体图像的 flash 使用情况(图片分辨率 200x200): 综上可以看出,采用 TouchGFX4.12.3+L8 格式 : * `& x( L d( N( x 1. 相比较 ARGB8888 像素格式, L8 大幅降低了资源文件的大小, 从而降低对存储芯片的需求 .7 n! W+ c! _5 _8 R' F/ }! V/ x 2. 同时由于图片像素信息大幅减少,读写一张图片的速度也大大提高, 也提高了系统实时性能.; T1 }- S2 {1 ]9 p) T) A . [' ]- m: M: z9 h7 _( K 03处理! g) [- w. G# g* R 2 V( t. ^1 }7 f3 e- Y# W. R 因此我们建议客户选择使用 TouchGFX4.12.3+L8 的功能,通过重新优化部分资源文件,减少图片资源的存储空间来实现客户的 UI 效果,并且改善了系统的实时性能. 4 m* ]5 [0 C- `% x# ~ |
学习& ?) w. ?/ M! c; B. o" `; l2 e/ U |
【STM32H7S78-DK】汽车仪表系统
【STM32H7S78-DK评测】TouchGFX (QR Code)二维码生成器
【STM32H7S78-DK评测】-5 LVGL&DMA2D DEMO测试
【STM32H7S78-DK评测】有点艰难的亮屏
【STM32H7S78-DK评测】TouchGFX 按钮操作-点亮LED
有奖直播 | STM32图形解决方案,让你的产品轻松的脱颖而出
【NUCLEO-H533RE评测】4、移植TouchGFX
[NUCLEO-C031C6评测] 驱动LCD 第三步 显示颜色块
【经验分享】stm32基于TouchGFX的GUI开发(八):STM32H743+驱动SPILCD屏幕(ST7789V2)
TouchGFX 4.23:支持矢量字体,节省Flash,更丰富的UI!