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はsigned charを期待しています。 – Jacob
はい** typedef unsigned char BYTE; ** – mmhyamin