我使用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位版本的限制?
答案 0 :(得分:0)
大小需要18000 * 18000 * 23 = 1.266GB连续内存的映像,在32位系统上,您的程序可能没有。您可能会发现这有助于如何将其拆分为更小的块。 https://forum.qt.io/topic/4270/qimagereader-setcliprect-limitation-on-size-large-image/4