我已经在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