前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >荔枝派Zero(全志V3S)基于QT实现在LCD显示图片

荔枝派Zero(全志V3S)基于QT实现在LCD显示图片

作者头像
Gnep@97
发布2023-08-10 10:12:39
4820
发布2023-08-10 10:12:39
举报
文章被收录于专栏:Gnep's_Technology_Blog

前言

有这样一个需求,通过配置 QT,在 linux 下实现显示我所想要显示的图片,实现的方式是我可以在命令行将图片的路径作为入参传入进去,从而对其进行显示,在之前的文章中已实现了在板子上运行 QT5 程序,此需求要自己写个 QT 程序,且需要对 buildroot 进行裁剪支持一些常用的图片格式即可。

一、配置 buildroot 及编译

代码语言:javascript
复制
make menuconfig

1、Target packages -> Graphic libraries and applications (graphic/text) -> Qt5 ,勾选上 gui module、widgets module、GIF support、JPEG support、PNG support

在这里插入图片描述
在这里插入图片描述

2、保存配置并退出

在这里插入图片描述
在这里插入图片描述

3、编译 buildroot 回到 buildroot-2017.08 的根目录下,执行 make,等待编译结束

二、写 QT 代码

在这里插入图片描述
在这里插入图片描述

main.cpp

代码语言:javascript
复制
#include "widget.h"

#include <QApplication>
#include <QString>
#include <QDebug>

QString image_path;

int main(int argc, char *argv[])
{
    if (argc < 2) {
        qDebug() << "pelase input image path\n";

        return -1;
    }
    image_path = argv[1];
    qDebug() << "image_path = " << image_path << "\n";

    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

widget.cpp

代码语言:javascript
复制
#include "widget.h"
#include "ui_widget.h"
#include <QLabel>
#include <QMovie>
#include <QImage>
#include <QPainter>

extern QString image_path;

void Widget::paintEvent(QPaintEvent *e)
{
    QPainter painter(this);
    QPixmap pix;
    pix.load(image_path);
    painter.drawPixmap(0, 0, 800, 480, pix);
}

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    resize(800, 480); // 设置窗口大小
}

Widget::~Widget()
{
    delete ui;
}

widget.h

代码语言:javascript
复制
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

    void paintEvent(QPaintEvent *);

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

ImageShow.pro

代码语言:javascript
复制
QT += widgets

HEADERS       = widget.h
FORMS         = widget.ui
SOURCES       = main.cpp \
                widget.cpp

# install
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/widgets/ImageShow
INSTALLS += target

widget.ui 界面没有放置控件,因此这里不罗列出来了

三、编译可执行文件

1、在 ~/licheepi_zero/buildroot-2017.08/output/build/qt5base-5.6.2/examples/widgets/widgets/ 目录下新建一个名为 ImageShow 的文件夹,将上述文件放置进去,并赋予权限

代码语言:javascript
复制
mkdir ImageShow
sudo chmod 777 ImageShow/ -R
cd ImageShow
ls
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、qmake 生成 Makefile

代码语言:javascript
复制
/home/Gnep/licheepi_zero/buildroot-2017.08/output/build/qt5base-5.6.2/bin/qmake ImageShow.pro
在这里插入图片描述
在这里插入图片描述

3、make 生成可执行文件

代码语言:javascript
复制
make
在这里插入图片描述
在这里插入图片描述

四、拷贝到 SD 卡

1、把 buildroot-2017.08 产生的 rootfs.tar 解压到刚创建的rootfs分区根目录 在 buildroot-2017.08 根目录下

代码语言:javascript
复制
find ./ -name rootfs.tar
sudo tar xf ./output/images/rootfs.tar -C /media/Gnep/rootfs/
在这里插入图片描述
在这里插入图片描述

2、将上述编译好的可执行文件也拷贝到 SD 卡的 rootfs 分区

代码语言:javascript
复制
sudo cp ImageShow /media/Gnep/rootfs/
在这里插入图片描述
在这里插入图片描述

3、此外也找两张图片拷贝到 SD 卡的 rootfs 分区,一张为 google.png,另一张为 Spongebob.jpg

五、上板子测试

1、到根目录下 ls 查看一下我们需要用到的文件

代码语言:javascript
复制
cd /
ls
在这里插入图片描述
在这里插入图片描述

2、运行 ImageShow 并指定图片路径,查看 LCD 屏幕 ①、显示 google.png

代码语言:javascript
复制
./ImageShow google.png   -platform linuxfb
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

②、显示 Spongebob.jpg

代码语言:javascript
复制
./ImageShow Spongebob.jpg  -platform linuxfb
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

问题记录第一次在板子上测试的时候屏幕为白屏,图片显示不出来,后来将 buildroot 先执行了 make distclen 再重新编译了 buildroot 后再次上板子测试才解决了问题

六、资源自取

方式1:github链接 https://github.com/Gnepuil79/licheepi.git

方式2:百度网盘 链接:https://pan.baidu.com/s/1vo-tTXZw4ePBgL0yeqvfEg 提取码:2wlt

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、配置 buildroot 及编译
  • 二、写 QT 代码
  • 三、编译可执行文件
  • 四、拷贝到 SD 卡
  • 五、上板子测试
  • 六、资源自取
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档