ESP32/Arduino 使用TFT_eSPI库加载显示图片JPG/PNG/BMP

Github地址,直接到位

https://github.com/bi3qwq/ConvertImageToColor565

最近在研究ESP32+TFT_eSPI+1.8寸TFT屏幕显示。在研究图片显示时,没有找到一个非常简单高效的方法、我也尝试了官方Arduino demo,但是,不是让下载PNG库、就让下载JPGDecode库,要增加以一些函数算法,非常繁琐、臃肿。

本人想用最简单的方法、最高效、最易维护的方式实现显示JPG/PNG/BMP图片。在网络寻找相关各种资料,看到官方github的tft.pushImage、tft.drawXBitmap、tft.drawBitmap方法,经过测试只有pushImage比较简单,而Bitmap实现均出现问题。

参考

https://github.com/Bodmer/TFT_eSPI/blob/master/examples/Generic/TFT_Flash_Bitmap/TFT_Flash_Bitmap.ino

若使用pushImage则需要采用Color565格式的数组,此时需要一个转换工具,将图片统一转换为Color565格式。

上面的“TFT_Flash_Bitmap.ino”代码上面有提示“libraries\UTFT\Tools\ImageConverter565.exe”,通过百度搜索到该文件。通过百度网盘搜索下载后,通过测试确实可以在ESP32上正常显示,成功显示。

通过进一步查看,该文件是C#开发,且没有加密。因此计划反编译出源代码,将其转化为HTML5网页格式,这样更加方便快捷。

使用.NET Reflector对主程序进行加载。很快的定位到了“Save”按钮代码。

上面找到相关核心代码后,我先通过VS2022新建了C#项目,将其功能复现。然后直接上GPT翻译成了HTML网页。

网页操作非常简单,直接“选择文件”,然后自动会转换图片为Color565数组格式。将该文件存为头文件“img1.h”,并有arduino主程序ino进行include。

Arduino代码

    #include <Arduino.h>
    #include <TFT_eSPI.h>

    #include "img1.h"

    TFT_eSPI tft = TFT_eSPI();

    //【use TFT_eSprite will be faster.】
    // TFT_eSprite spr(&tft);

    void setup()
    {
        tft.init();

        //【use Default】
        tft.fillScreen(TFT_WHITE);
        tft.setSwapBytes(true);
        tft.pushImage(0, 0, img1_width, img1_height, img1);  //display

        //【use TFT_eSprite will be faster.】
        // spr.createSprite(100,100);
        // spr.fillSprite(TFT_WHITE);
        // spr.setSwapBytes(true);
        // spr.pushImage(0, 0, img1_width, img1_height, img1);
        // spr.pushSprite(0, 0);   //display
    }

    void loop()
    {

    }

            

上图红色为TFT默认方式,就这么简单。。实现显示图片。不需要管什么JPG库一类的,哪些效率低的不行。该方式简单、高效!

显示成功!!

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会为您讲解在Arduino使用TFT_eSPI编程驱动LCD显示的实验过程,以下是详细步骤: 1. 准备材料 你需要准备以下材料: - Arduino开发板 - 2.4寸TFT LCD屏幕 - 杜邦线 - 电位器 - 4.7K电阻 2. 连接电路 将LCD屏幕连接到Arduino开发板上,具体如下: - 将LCD屏幕的VCC接到Arduino的3.3V引脚上 - 将LCD屏幕的GND接到Arduino的GND引脚上 - 将LCD屏幕的CS引脚接到Arduino的D10引脚上 - 将LCD屏幕的DC引脚接到Arduino的D9引脚上 - 将LCD屏幕的MOSI引脚接到Arduino的D11引脚上 - 将LCD屏幕的SCK引脚接到Arduino的D13引脚上 - 将LCD屏幕的RST引脚接到Arduino的D8引脚上 - 将电位器的中间引脚接到LCD屏幕的A0引脚上,将电位器的两个端口接到GND和3.3V引脚上,用来控制屏幕亮度 3. 安装TFT_eSPIArduino IDE中打开“工具”菜单,选择“管理”,搜索TFT_eSPI并安装。 4. 编写程序 以下是一个简单的程序,用于在LCD屏幕上显示一些文本: ```c++ #include <TFT_eSPI.h> TFT_eSPI tft = TFT_eSPI(); void setup() { tft.begin(); tft.setRotation(1); // 设置屏幕方向 tft.fillScreen(TFT_BLACK); // 填充黑色背景 tft.setTextColor(TFT_WHITE); // 设置字体颜色 tft.setTextSize(2); // 设置字体大小 tft.setCursor(0, 0); // 设置文本位置 tft.println("Hello, World!"); // 显示文本 } void loop() { } ``` 5. 上传程序 将程序上传到Arduino开发板上。 6. 查看LCD屏幕显示Arduino开发板上加电,等待程序启动后即可在LCD屏幕上看到显示的文本。 以上就是在Arduino使用TFT_eSPI编程驱动LCD显示的实验过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值