2017-04-14 85 views
0

您好,我需要幫助的上下文如下。我構造了一個rgb值的向量(一個rgb值是一個UInt32),我想盡可能快地將它們放在QImage中,最好不要setPixel,因爲它非常慢。要獲取第一個rgb值並將其置於圖像中的[0,0]處,將下一個值設置爲[0,1],依此類推。誰能幫我這個?rgb值向量QImage

+0

嘗試使用'QImage'的'scanLine()'方法 – ramzes2

回答

0

This QImage構造函數是你需要的。訣竅只在於選擇正確的Format。我想你的情況是QImage :: Format_RGB32。

所以嘗試:

std::vector<int32_t> pixels{/*init or fill-up your data*/}; 
int width = 42, height = 42; // your valid values here 

// what you're interesting in 
auto image(Qimage((uchar *)pixels.data(), width, height, QImage::Format_RGB32)); 

這種方法是最快的方式 - 中的像素不會被複制,但原始緩衝區將通過內部QImage的使用。

如果你打算晚些時候用QPainter::drawImage渲染你的圖像,不要忘了把Qt :: NoFormatConversion作爲一個標誌 - 這會提高你的應用性能。