• 資料介紹
    • 1、引言
    • 2、TouchGFX 的圖片壓縮功能
  • 資料預(yù)覽
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

一個 TouchGFX 圖片壓縮導(dǎo)致顯示丟失的問題

03/04 15:33
607
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

一個 TouchGFX 圖片壓縮導(dǎo)致顯示丟失的問題

1.20 MB

1、引言

在使用 TouchGFX 生成代碼時,像圖片、文本和字體這樣的資源會被轉(zhuǎn)換成 C++文件,然后與TouchGFX 應(yīng)用程序代碼、用戶代碼和 TouchGFX 庫一起編譯后存儲在 Flash 中。 這意味著具有許多資源的大型或復(fù)雜項(xiàng)目會需要使用更多的 Flash 存儲空間。由于大多數(shù)應(yīng)用中的存儲器資源都是有限的,因此有幾種方法可以減少應(yīng)用對 Flash 存儲器容量的需求。TouchGFX 提供四項(xiàng)內(nèi)置功能,可以幫助顯著減少應(yīng)用程序的 Flash 存儲器需求。 這四項(xiàng)功能分別是 L8 圖片格式、圖片壓縮、可縮放矢量圖形(SVG)和矢量字體。本文只涉及圖片壓縮并會先介紹 TouchGFX 支持的圖片壓縮功能,然后結(jié)合客戶使用 TouchGFX圖形壓縮功能出現(xiàn)圖片顯示丟失的問題進(jìn)行分析。

2、TouchGFX 的圖片壓縮功能

2.1. TouchGFX 圖片壓縮功能簡介

TouchGFX 從 4.22 版開始支持圖片壓縮。4.22 to 4.23 只支持 L8 格式的圖片壓縮。從4.24 版本開始,支持 RGB565, RGB888, 以及 ARGB8888 壓縮。圖片壓縮通常有兩種風(fēng)格:無損或有損。 有損圖片壓縮通過去除圖片的微小細(xì)節(jié)來實(shí)現(xiàn)。 這樣通常會得到最大的縮減圖片,但原始圖片無法準(zhǔn)確再現(xiàn)。 無損壓縮總是無任何差異地再現(xiàn)原始圖片,無損壓縮的尺寸縮減通常較小。對于圖形,通常要求 UI 元素完全按照其設(shè)計(jì)來繪制。 因此,TouchGFX 只支持無損壓縮。圖片壓縮的優(yōu)點(diǎn)是存儲空間需求減少,但也有缺點(diǎn),因?yàn)閳D片在繪制到幀緩存時必須解壓縮。 與繪制未壓縮的圖片相比,這種解壓縮在許多情況下需要 CPU 做更多的工作。 結(jié)果可能是性能下降。這意味著必須將 Flash 減少帶來的優(yōu)勢與 CPU 使用率增加帶來的劣勢進(jìn)行權(quán)衡。STM32 中的圖形加速器 DMA2D 和 GPU2D(ChromART and NeoChromGPU)不能直接繪制壓縮圖片。壓縮圖片使用軟件硬件渲染的混合方式進(jìn)行繪制,即壓縮數(shù)據(jù)由軟件分塊解壓縮,然后在適用的情況下將這些分塊委托給 DMA2D 處理。許多應(yīng)用中,不建議壓縮所有圖片,而是只壓縮那些性能不受影響且與減少 Flash 相關(guān)的圖片。

2.2. TouchGFX 支持的壓縮方式

2.2.1 L8 壓縮

L8 位圖格式僅適用于高達(dá) 256 色的圖片。 每個像素只是一個 8 位數(shù)字,表示與圖片一起存儲的顏色表中的一種顏色。L8 的壓縮只是像素編號的壓縮。顏色表保持不變。壓縮的L8 圖片像普通的未壓縮位圖一樣使用。 關(guān)于 L8 像素格式可以參考:使用 L8 圖片格式減少存儲空間消耗 | TouchGFX Documentation如果我們使用 L8 壓縮 28,121 字節(jié)的一個圖片,像素數(shù)據(jù)將減少到 5,735 字節(jié)。壓縮圖片數(shù)據(jù)(包括顏色表)的總大小小于原始圖片的 20%。因此,壓縮允許我們在同一個 Flash空間中擁有 5 個不同的背景或者將 Flash 需求減少 28,121 字節(jié)。壓縮的 L8 圖片可以像普通的未壓縮位圖一樣使用。 例如,您可以使用圖片控件顯示圖片,而無需在 TouchGFXDesigner 或代碼中對項(xiàng)目進(jìn)行任何修改。L8 圖片轉(zhuǎn)換器支持三種壓縮算法(L4、RLE、LZW9)。

  • L4,對每個像素進(jìn)行 4 比特編碼。 僅適用于最多 16 種顏色的圖片。
  • RLE,像素的游程編碼。 僅適用于最多 64 種顏色的圖片。
  • LZW9,基于詞典的編碼。 適用于所有 L8 圖片。

RLE 算法的解壓縮速度比 LZW9 快得多,因此如果 LZW9 僅壓縮圖片,轉(zhuǎn)換器將選擇RLE 稍微好一點(diǎn)。

資料預(yù)覽

相關(guān)推薦