我已經在imgBuffer中捕獲了指紋圖像。如何將圖像(BYTE *)轉換爲Base64
BYTE *imgBuffer = new BYTE[m_ImageWidth*m_ImageHeight];
myObj->GetImage(imgBuffer);
將其轉換爲Base64。
int imgBufferSize = sizeof(imgBuffer) - 1;
QByteArray temp = QByteArray(*imgBuffer, imgBufferSize);
QByteArray base64Image = temp.toBase64();
但我得到的東西是這樣的:
BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw==
我也跟着這樣的:How to convert an array into QByteArray?
編輯: 實際執行雅各布的解決方案後,我得到了另一個Base64編碼字符串,但事實並非也是一個圖像。雖然雅各布的解決方案是正確的問題是圖像沒有任何元數據。所以,我解決它使用以下步驟:
QImage jpgImage((const unsigned char*)imgBuffer, m_ImageWidth, m_ImageHeight, QImage::Format_Grayscale8);
QByteArray mImage64ByteArray;
QBuffer buffer(&mImage64ByteArray);
buffer.open(QIODevice::WriteOnly);
jpgImage.save(&buffer, "JPG");
mImage64ByteArray = mImage64ByteArray.toBase64();
錯誤:沒有構造函數「QByteArray :: QByteArray」的實例匹配參數列表。參數類型爲:(BYTE *,int) – mmhyamin
查看BYTE的類型。我會猜測BYTE是一個unsigned char的typedef,而QByteArray期望一個有符號的char。 – Jacob
是** typedef無符號字符BYTE; ** – mmhyamin