2014-12-07 61 views
4

我想從QImage創建QByteArray,但儘管我嘗試了很多變化,我無法處理它。如何將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 2014-12-07 14:43:18

+0

嗯,我已經看過Qt文檔中的這個解決方案,但在我的情況下,緩衝區仍然是空的。即,'Q_ASSERT(buffer.data()。size()> 0);'拋出一個異常。 當然,我檢查了QImage是有效的:我已經從文件中加載它,轉換爲QPixmap並將其顯示在QLabel中。 – 2017-01-26 13:15:04