QPixmap无法打开某些图像

时间:2015-03-08 14:29:05

标签: c++ qt null qpixmap

它打开一个JPEG图像,但不打开另一个JPEG图像。目录和文件存在于我的系统上。为便于重新设计,以下代码中使用的图片为console testf2

#include "mainwindow.h"
#include <QApplication>
#include <QPixmap>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    QPixmap *pixmap = new QPixmap;

    pixmap->load("C:/Programs/console test.jpg");
    if(pixmap->isNull())
        cout << "darn" << endl;
    else
        cout << "not null" << endl;

    pixmap->load("C:/Programs/f2.jpg");

    if(pixmap->isNull())
        cout << "darn" << endl;
    else
        cout << "not null" << endl;

    return a.exec();
}

上面的代码打印

darn
not null

如果相关,该应用程序是一个QWidget应用程序。

1 个答案:

答案 0 :(得分:0)

  

console test.jpg实际上是一个PNG文件。 - Oktalist

Oktalist回答了这个问题。我天真地使用并将扩展从png改为jpg,期待文件转换。使用相同方法撤消更改后,图像将成功打开。

ifstream src("console print.jpg", ios::binary);
ofstream dest("console print.png", ios::binary);
dest << src.rdbuf();
dest.flush();

现在控制台打印具有正确的文件扩展名。它打开了。还有十亿种其他方法可以做到这一点,但这很容易。

-Sanfer