2017-04-14 77 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作为一个标志 - 这会提高你的应用性能。