2014-12-07 13 views
4

QImage에서 QByteArray를 만들려고합니다. 그러나 많은 varient를 시도했지만 처리 할 수 ​​없었습니다.QImage를 QByteArray로 변환하는 방법?

는 내가 뭐하는 거지 것은 :

QImage img_enrll; // <--- There is an image coming from another function. 

QByteArray arr((char*)img_enrll.bits(),img_enrll.byteCount()); // <-- convertion but I am not sure it is true or not. 

funcCheck((unsigned char*)arr.data(), arr.size(), 0, &sam, 1, &n); 


virtual Error funcCheck (const uint8_t src[], 
          size_t   src_len, 
          size_t   tout_ms, 
          IRawSample*  dst[], 
          size_t   dst_len, 
          size_t*   dst_n) 

그러나 오류 코드가 잘못된 데이터를 반환합니다. 나는 QImage를 QByteArray로 변환하는 것이 잘못된 것이라고 생각한다. QByteArray로 변환하는 방법을 친절하게 도와주십시오.

답변

4

이 작업을 수행 할 수 있습니다 :

QImage img_enrll; 
QByteArray arr; 
QBuffer buffer(&arr); 
buffer.open(QIODevice::WriteOnly); 
img_enrll.save(&buffer, "yourformat"); 

서면 데 직렬화이 필요한 경우, 당신은 QDataStream과의 더 나은 것을.

+0

오, 고맙습니다. 이전에이 솔루션을 사용해 보았습니다. 그러나 QDataStream은이 문제를 해결하는 방법을 잘 알고 있습니다. 또한 잘 작동합니다. – goGud

+0

흠,이 솔루션은 Qt 문서에서 보았지만 버퍼는 제 경우에 비어 있습니다. 즉,'Q_ASSERT (buffer.data(). size()> 0);'는 예외를 던집니다. 물론 QImage가 유효한지 확인했습니다. 파일에서로드하고 QPixmap으로 변환하여 QLabel에 표시했습니다. –