Qt5 QImageReader奇怪的行为

时间:2015-12-09 13:57:30

标签: c++ qt image-processing qt5 32bit-64bit

我使用QImageReader测试一个简单的代码

    scene = new QGraphicsScene(this);
    ui->graphicsView->setScene(scene);
    QPixmap pixmap;
    QImageReader reader("hubble.tif");
    reader.setClipRect(QRect(0,0,8000,8000));
    QImage img = reader.read();
    if (img.isNull())
        qDebug() << reader.errorString();
    else
    {
        pixmap = QPixmap::fromImage(img);
        scene->addPixmap(pixmap);
    }

当我用Qt5.3.2_MSVC 2013_OpenGl 64bit编译它并且我用图像18000x18000(感谢Nasa Hubble Image ...)测试它时,程序正常工作。 当我测试相同的程序但使用Qt5.3.2_MSVC 2013_OpenGl 32bit编译时,程序失败,读者错误“无法读取图像数据”!

这是Qt中的错误还是Qt文档中未提及的32位版本的限制?

1 个答案:

答案 0 :(得分:0)

大小需要18000 * 18000 * 23 = 1.266GB连续内存的映像,在32位系统上,您的程序可能没有。您可能会发现这有助于如何将其拆分为更小的块。 https://forum.qt.io/topic/4270/qimagereader-setcliprect-limitation-on-size-large-image/4