如何使用圖像作為字節(jié)數(shù)組與TFT_eSPI
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在幾秒鐘內(nèi)將任何PNG/JPG轉(zhuǎn)換為任何格式的RGB字節(jié)數(shù)組-使用免費(fèi)的圖像到字節(jié)數(shù)組轉(zhuǎn)換器來(lái)提升您的TFT_eSPI圖形!
在基于ILI9341的TFT顯示器上添加自定義圖形——徽標(biāo)、圖標(biāo)、精靈——比您想象的要簡(jiǎn)單。通過(guò)將圖像轉(zhuǎn)換為16位RGB字節(jié)數(shù)組并將其存儲(chǔ)在閃存中,您可以使用TFT_eSPI庫(kù)立即繪制圖像,而不需要SD卡或外部文件系統(tǒng)。這個(gè)工作流程的關(guān)鍵是Arduino TFT顯示器的RGB圖像到字節(jié)數(shù)組轉(zhuǎn)換器,這是一個(gè)免費(fèi)的在線工具,可自動(dòng)完成整個(gè)轉(zhuǎn)換過(guò)程。
為什么RGB圖像到字節(jié)數(shù)組轉(zhuǎn)換器很重要
這個(gè)轉(zhuǎn)換器改變了游戲規(guī)則,因?yàn)樗?
?消除手動(dòng)步驟。只需上傳PNG或JPG,并準(zhǔn)備粘貼uint16_t數(shù)組。
?自動(dòng)處理5-6-5格式。不需要糾結(jié)于位掩碼或端序。
?尊重方向和尺寸。您可以在上傳時(shí)選擇寬度、高度和旋轉(zhuǎn)。
準(zhǔn)備你的硬件和庫(kù)
在轉(zhuǎn)換圖像之前,請(qǐng)確保:
?布線和DisplayILI9341 TFT通過(guò)SPI連接到ESP32(或類似)。MOSI, MISO, SCLK, CS, DC, RST和可選的BLK引腳在User_Setup.h中連接和定義。
?安裝TFT_eSPIClone或通過(guò)庫(kù)管理器安裝。編輯User_Setup.h以匹配您的輸出并啟用ILI9341。
準(zhǔn)備好硬件和庫(kù)之后,您就可以專注于圖形了。
轉(zhuǎn)換你的圖像在三次點(diǎn)擊
在瀏覽器中打開RGB圖像轉(zhuǎn)換器。
?上傳和配置點(diǎn)擊選擇文件并選擇您的圖像。輸入所需的寬度和高度像素。(可選)勾選旋轉(zhuǎn)90°/180°,如果需要。
生成CodeHit轉(zhuǎn)換。幾秒鐘后,你就會(huì)看到一段c++代碼:
復(fù)制這個(gè),你就完成了——不需要手動(dòng)編輯!
在草圖中嵌入字節(jié)數(shù)組
將生成的數(shù)組粘貼到草圖的頂部:
程序?qū)?shù)組保存在閃存中,保留寶貴的RAM。
LOGO_WIDTH和LOGO_HEIGHT宏允許您稍后輕松引用尺寸。
初始化TFT并顯示圖像
在setup()你的Arduino草圖:
pushImage(x, y, w, h, data)從flash中讀取5-6-5像素?cái)?shù)據(jù)并渲染。
高級(jí)提示和技巧
?內(nèi)存管理大的圖像會(huì)消耗大量的閃存——請(qǐng)檢查ESP32的可用閃存。對(duì)于多個(gè)映像,可以考慮使用RLE進(jìn)行壓縮,然后動(dòng)態(tài)地進(jìn)行解壓縮。
?Animation將每個(gè)幀轉(zhuǎn)換為一個(gè)單獨(dú)的數(shù)組,然后使用pushImage()循環(huán)遍歷它們。平衡幀大小和幀數(shù)以適應(yīng)閃光限制。
?如果顏色出現(xiàn)反轉(zhuǎn),使用tft.setSwapBytes(true)。結(jié)合tft.pushPixels()進(jìn)行部分更新或覆蓋。
本文編譯自hackster.io