【发布时间】:2017-04-09 16:22:26
【问题描述】:
我在 imgBuffer 中捕获了指纹图像。
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?
编辑: 实际上,在实施 Jacob 的解决方案后,我得到了另一个 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();
【问题讨论】: