QT二进制读取图像文件并显示

Posted wxl845235800

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT二进制读取图像文件并显示相关的知识,希望对你有一定的参考价值。

打开对话框选择文件

二进制方式读取文件

转换成图像显示

 

 

void MainWindow::showImage()
{
    //打开文件对话框

    QString lastPath="D:/Englishpath/QTprojects/DATA/videoData";
    fileName = QFileDialog::getOpenFileName(this,"OpenFile", lastPath);
    if(fileName.isEmpty())
    {
        QMessageBox::information(this,"Error Message","Select File Failed");
        return;
    }
    QFile file(fileName);
    if(!file.open(QIODevice::ReadOnly))
    {
        QMessageBox::information(NULL,"失败提示","打开失败",QMessageBox::Ok,QMessageBox::Ok);
        return;
    }
//    QTextStream in(&file);
//    ui->textEdit->setText(in.readAll());

    //类型转换为可以被ifstream使用的
    QString str =fileName;
    char *s; QByteArray//QString转换为char*
    ba = str.toLatin1();
    s = ba.data();

    // [1]得到二进制数据;
    using std::ifstream;
    ifstream i_f_stream(s,ifstream::binary);
    i_f_stream.seekg(0, i_f_stream.end);
    int length = i_f_stream.tellg();
    i_f_stream.seekg(0, i_f_stream.beg);
    char *buffer = new char[length];
    i_f_stream.read(buffer, length);//一次性读取
    i_f_stream.close();

    // [2]缓存数据重构;
    QByteArray byteArray(buffer, length);

    // [3] 构建图片对象并载入二进制数据;
    QImage img;
    img.loadFromData(byteArray, "png");

    // [4] 结果检测(将图片保存到某一目录、用label显示);
    img.save(QString("test.bmp"), "png");
    ui->d_label->setPixmap(QPixmap::fromImage(img));

    delete [] buffer;

//    QDataStream in(&file);
//    while( !in.atEnd())
//    {
//        QByteArray s;
//        in >> s;
//        file.close();
//        qDebug()<<s<<endl;
//    }
}

 

【转账自】

std::ifstream以二进制方式读取图片文件,用Qt再将其转为图片(QImage::loadFromData()函数使用) - ypy9323的博客 - CSDN博客 https://blog.csdn.net/ypy9323/article/details/81835530

以上是关于QT二进制读取图像文件并显示的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5 PyQt5安装及配置,从文件夹读取图片并显示,模拟生成素描图像

Qt中用QLabel显示图片

在 C# 中使用 QDataStream 读取在 QT 中创建的二进制文件

qt 读取一个txt文件,把里面的内容已二进制的方式存储到另一个文件里面。

如何从文件中读取数据并在 QT 的 QEditText 框中显示

Qt可显示基本的图像类型,利用QImageQPxmap类可以实现图像的显示