当前位置: 首页 > news >正文

Qt在IMX6ULL嵌入式系统中图片加载问题排查与解决

Qt在IMX6ULL嵌入式系统中图片加载问题排查与解决(保姆级教学!)

在使用Qt开发IMX6ULL嵌入式系统的过程中,我遇到了图片加载的常见问题。本文将分享问题排查的详细过程和解决方案,希望能帮助遇到类似困难的开发者。


问题描述

开发过程中,发现Qt程序无法正常加载图片,常见的错误表现为:

  • QFile::exists() 返回 false
  • 图片无法显示
  • 没有明确的错误提示
    就是imx6ull开发板上没有任何图片,也没有保存信息。
    我已经把图片放到对应的目录下了,就是没有显示。

原因分析:

排查步骤

1. 支持的图片格式检查

因为我一开始用的是jpg格式所以报错
使用 QImageReader::supportedImageFormats() 可以快速获取系统支持的图片格式:
这句代码很关键

qDebug() << "Supported image formats:" << QImageReader::supportedImageFormats();

输出结果:

在这里插入图片描述
输出结果显示支持的格式包括:

  • bmp 位图文件,通常兼容性最好
  • png 常用的无损压缩格式
  • gif 支持动画的格式
  • svg 矢量图形格式
  • ico 图标文件
  • pbm/pgm/ppm 便携式位图格式
  • xbm/xpm 位图格式

2.文件路径验证

确保文件路径正确且具有访问权限:
图片移动进去必须是可写可读的
sudo chmod 777 6.bmp

qt代码部分

    // 获取应用程序当前目录
    QString currentPath = QCoreApplication::applicationDirPath();
    QString imagePath = currentPath + "/6.bmp";

    // 打印当前目录和完整路径
    qDebug() << "Current directory:" << currentPath;
    qDebug() << "Full image path:" << imagePath;
    qDebug() << "File exists:" << QFile::exists(imagePath);

然后就解决问题了

完整步骤

创建工程
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述前缀为 /
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
我们构建工程一下发现就在我们的工程目录下了
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其他代码不用改就改mainwindow.cpp代码

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QCoreApplication>
#include <QDebug>
#include <QPixmap>
#include <QDir>
#include <QImageReader>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 获取应用程序当前目录
    QString currentPath = QCoreApplication::applicationDirPath();
    QString imagePath = currentPath + "/6.bmp";

    // 打印当前目录和完整路径
    qDebug() << "Current directory:" << currentPath;
    qDebug() << "Full image path:" << imagePath;
    qDebug() << "File exists:" << QFile::exists(imagePath);

    // 检查支持的图像格式
    qDebug() << "Supported image formats:" << QImageReader::supportedImageFormats();

    QPixmap pixmap(imagePath);
    if (pixmap.isNull()) {
        qDebug() << "Failed to load image from:" << imagePath;
    } else {
        qDebug() << "Image loaded successfully from:" << imagePath;
        qDebug() << "Image size:" << pixmap.width() << "x" << pixmap.height();
        ui->label->setPixmap(pixmap);
        ui->label->setScaledContents(true);
    }
}

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

编译运行就OK
PC端需要把图片放到/home/embedfire/qtdemo/build-PIC_test-Desktop_Qt_5_11_3_GCC_64bit-Release下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后把图片和构建好的二进制文件移动到开发板的同一个目录下运行就没问题了
请添加图片描述

经验总结:

  1. 嵌入式系统图片加载需要特别注意文件路径和格式
  2. 优先使用 BMP 格式进行兼容性测试
  3. 使用 qDebug() 进行详细的日志记录
  4. 重新编译和部署程序后务必重新运行

文章转载自:

http://nPuscyYR.wmmtL.cn
http://GyZB2nPP.wmmtL.cn
http://J0Ui87uE.wmmtL.cn
http://gBnHz6cx.wmmtL.cn
http://1LKOT0Yx.wmmtL.cn
http://jQEU3khH.wmmtL.cn
http://vQvyWFqP.wmmtL.cn
http://UMDyjz92.wmmtL.cn
http://xCvRY899.wmmtL.cn
http://mxtRlJ8U.wmmtL.cn
http://bIv7rsjr.wmmtL.cn
http://IxxJd4qu.wmmtL.cn
http://zYMrCDEc.wmmtL.cn
http://g0Q7A908.wmmtL.cn
http://CRX1scT4.wmmtL.cn
http://yzt5tmcI.wmmtL.cn
http://Po3NVzCc.wmmtL.cn
http://qXHB56Do.wmmtL.cn
http://aARpj8aC.wmmtL.cn
http://lVEN6Pcd.wmmtL.cn
http://Yd6cdtpA.wmmtL.cn
http://qkls6wE8.wmmtL.cn
http://FKIlNvx4.wmmtL.cn
http://gGU5RaRz.wmmtL.cn
http://P5moj1R5.wmmtL.cn
http://t888pOao.wmmtL.cn
http://LyzLVg4p.wmmtL.cn
http://6XNCT1nA.wmmtL.cn
http://xltyLqIN.wmmtL.cn
http://H8cgn1GU.wmmtL.cn
http://www.dtcms.com/a/89811.html

相关文章:

  • 多线程—锁策略
  • 去中心化金融
  • 漏洞挖掘---锐明Crocus系统Service.do接口任意文件读取
  • 《数字图像处理》第三章 3.8 基于模糊技术的图像强度变换与空间滤波学习笔记
  • 微积分小白入门:第二章 数列与极限——从困惑到顿悟的奇妙之旅
  • Vue 3中的Provide与Inject
  • stm32f103c8t6使用pwm(DMA)驱动24个ws2812b灯驱动
  • 【探寻C++之旅】第十章:map和set(STL续)
  • 看 MySQL InnoDB 和 BoltDB 的事务实现
  • 3.Excel:快速分析
  • 深入理解现代C++在IT行业中的核心地位与应用实践
  • 在 Windows 上安装 PowerShell 的多种方法与完整指南
  • 【设计模式】策略模式(Strategy Pattern)详解
  • 群体智能优化算法-沙丁鱼群优化算法(Salp Swarm Algorithm (SSA,含Matlab源代码)
  • C# Modbus TCP/IP学习记录
  • 【Unity网络编程知识】使用Socket实现简单UDP通讯
  • 算法 之 矩阵的对角线问题
  • Spring AI Alibaba 工具(Function Calling)使用
  • 2025.3.25总结
  • Java动态代理的使用和安全问题
  • WPS二次开发系列:以自动播放模式打开PPT文档
  • 【第五章】作业
  • MYSQL运维常用SQL
  • 中医五行学说的系统性扩展讲解
  • 计算机控制系统的最小拍控制器设计及仿真分析
  • 【区块链安全 | 第二篇】区块链概念详解
  • 鸿蒙开发:openCustomDialog关闭指定Dialog
  • Axure RP9.0 教程:左侧菜单列表导航 ( 点击父级菜单,子菜单自动收缩或展开)【响应式的菜单导航】
  • Qt在模块依靠情况下资源文件名称和资源名称的使用限制
  • 微服务架构-Feign声明式调用