我試圖在啓動時加載大約450幀,然後在我的應用程序的每個循環中,我想從內存中加載圖像,而不是從SDCard加載,因爲它非常流暢〜 40毫秒。啓動時從內存中加載QImages
我試過下面的代碼,但是我得到一個空的圖像。我想要加載的圖像是灰度圖像,1280 * 960像素。
我使用下面的代碼:
QImage images[450];
for (int i=1; i<450;i++)
{
sprintf(imFName, "%s/img_%08i.png", imPath.c_str(), i);
images[i].load(QString(imFName));
images[i].setColorCount(1);
}
for (int frameIdx = 1; frameIdx <= 450; frameIdx++)
{
prevImg = curImg;
imIndex++;
printf(" FrameIdx : %d\n", imIndex); fflush(stdout);
sprintf(imFName, "%s/img_%08i.png", imPath.c_str(), imIndex);
double t10 = omp_get_wtime();
QImage curImg;
bool result = curImg.loadFromData((unsigned char*)images[frameIdx].constBits(),images[frameIdx].byteCount());
fprintf(stderr, "result %", result);
if (curImg.isNull())
break;
}
和錯誤是最有可能在你沒有張貼代碼,因爲它應該工作的罰款。你檢查了緩衝區溢出嗎? – 2013-03-12 12:50:25
有沒有很好的理由,你不能只寫'QImage curImg = images [frameIdx];'? – 2013-03-12 12:51:42
@BЈовић結果給SetColorCount圖像NULL – Andre 2013-03-12 12:55:56