客户在使用 TouchGFX开发 GUI应用的时候, 需要很多的图片资源来呈现友好的人机交互功能, 因此外扩了一个 FLASH来存储图片资源. 在软件研发后期发现现有的 FLASH存储空间不够, 因此提出是否可以使用 TouchGFX来减少图片资源的存储空间且实现同样的 UI效果. 01调研/ z& k" ~9 t" y( f( X % [' }$ U; M s1 y. O* m" k8 p # 在硬件方面 3 M9 |8 V$ U3 ~: t 9 n: N$ B+ U% R/ _; s0 \ MCU 的图像处理加速器DMA2D 中的调色板的颜色格式 , 支持 L8 格式的图层之间的渲染:/ D: P$ e! |( W: U& f7 i # 从软件方面6 |) B" |7 F- ~ 9 F1 H2 p* U* O* I; w& ` 最新的 TouchGFX4.12.3 开始, 可以利用了 DMA2D 的调色板功能对图片的资源进行优化 .& `/ w+ @/ ?) F1 K' @, e , }8 M7 d" i* D3 { # 比如下图(宽 x 高=200x200) ) n3 P) w# `/ ~& {! M8 I9 A; z 1. 这幅图是由 256 种颜色组成的.- ^% R1 H% Y [0 u( g 2. 且每种颜色都针对图像进行了优化.; h' O' S2 K; Q( c V 3. 256 种索引颜色中的每一种都是 24 位颜色./ N9 `$ r% w* y 1. L8_ARGB8888 : 200x200x1byte+256x4byte=41024bytes; \, n X' s9 [' d. b0 p$ e , W1 M1 J+ p/ \ =>200x200 个 8bit 的颜色索引+256 个 32bit1 x- o1 W9 Q5 S+ ` 2. ARGB8888 : 200x200x4byte=160000bytes. =>200x200 个 32bit 的颜色 在 TouchGFX 中使用 L8 Image ,只需要将 L8 的图片拖入到 TouchGFX Designer 中,然后在Image 页面中选择正确的格式 :2 `) P: @" ?9 y. d- J( ?& ] 注意 :如果图片超过 256 颜色,转换工具就会报错,因此可以使用图片工具(如 paint.net/imagemagick)将颜色数减少至少于 256 色 : H, C7 M/ |1 H Paint.net: 02结论( Y7 w: Y1 W# T, w; }/ A3 m. @9 A % V( u7 _0 t# }& J2 f7 ] 图像使用 L8 格式时占用的 flash 大小显著低于标准 24 位格式(RGB888)的原始图像。下表列出了这三种不同调色板格式的具体图像的 flash 使用情况(图片分辨率 200x200): ( H8 r2 G! A, p: E" C/ l @ 9 x$ J# y) a1 G) t' | 综上可以看出,采用 TouchGFX4.12.3+L8 格式 : 2 O" C4 \7 H1 R7 Z# I 1. 相比较 ARGB8888 像素格式, L8 大幅降低了资源文件的大小, 从而降低对存储芯片的需求 . 2. 同时由于图片像素信息大幅减少,读写一张图片的速度也大大提高, 也提高了系统实时性能.9 O, v% v3 w) G8 w& X7 Y2 { 6 M9 \9 P) g7 E 03处理 因此我们建议客户选择使用 TouchGFX4.12.3+L8 的功能,通过重新优化部分资源文件,减少图片资源的存储空间来实现客户的 UI 效果,并且改善了系统的实时性能. |
学习/ D) S1 F' p0 D, Q0 j; X" W$ l7 e |
[NUCLEO-C031C6评测] 驱动LCD 第三步 显示颜色块
【经验分享】stm32基于TouchGFX的GUI开发(八):STM32H743+驱动SPILCD屏幕(ST7789V2)
TouchGFX 4.23:支持矢量字体,节省Flash,更丰富的UI!
【STM32U599】2.写个手表菜单
【STM32U599】1.初步尝试
【学习有奖】一大波TouchGFX 实操视频来袭,快速提升你的GUI技能
TouchGFX 4.22解锁新功能:实时标注,L8图像压缩,离线模式
GUI系列课程上新 | STM32 GUI开发技能分享
今日直播|STM32 GUI解决方案浅谈及1小时教会你使用TouchGFX
【GUI设计】家居控制