矢量的rgb值到QImage

时间:2017-04-14 09:35:45

标签: c++ qt image-processing

我需要帮助的背景如下。我构造了一个rgb值的向量(一个rgb值是一个UInt32),我希望尽可能快地将它们放在QImage中,最好没有setPixel,因为它非常慢。取第一个rgb值并将其放在图像中的[0,0],下一个值放在[0,1],依此类推。任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

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作为标记传递 - 这样可以提高您的应用效果。

相关问题