0
您好,我需要幫助的上下文如下。我構造了一個rgb值的向量(一個rgb值是一個UInt32),我想盡可能快地將它們放在QImage中,最好不要setPixel,因爲它非常慢。要獲取第一個rgb值並將其置於圖像中的[0,0]處,將下一個值設置爲[0,1],依此類推。誰能幫我這個?rgb值向量QImage
您好,我需要幫助的上下文如下。我構造了一個rgb值的向量(一個rgb值是一個UInt32),我想盡可能快地將它們放在QImage中,最好不要setPixel,因爲它非常慢。要獲取第一個rgb值並將其置於圖像中的[0,0]處,將下一個值設置爲[0,1],依此類推。誰能幫我這個?rgb值向量QImage
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作爲一個標誌 - 這會提高你的應用性能。
嘗試使用'QImage'的'scanLine()'方法 – ramzes2