2017-04-14 2 views
0

안녕하세요, 도움이 필요한 컨텍스트는 다음과 같습니다. 나는 rgb 값 (하나의 rgb 값은 UInt32 임)의 벡터를 구성하고 가능한 한 빨리 setPixel없이 QImage에 넣고 싶습니다. 매우 느립니다. 첫 번째 rgb 값을 가져 와서 이미지의 [0,0]에 넣고 [0,1]의 다음 값 등으로 지정합니다. 아무도 이것으로 나를 도울 수 있습니까?QImage에 대한 rgb 값의 벡터

+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을 플래그로 전달해야합니다. 그러면 앱 성능이 향상됩니다.

관련 문제