0
我到C++得到調用(...)方法結果的類型VARIANT * 變種。 var是.bmp圖像。SAFEARRAY *到的QByteArray
qDebug() << var.vt; //8209 ~ VT_ARRAY|VT_UI1 ~ SAFEARRAY(BYTE)
如何將其從SAFEARRAY(BYTE)轉換爲QByteArray?或者如何獲得QImage(QPixmap,QBitmap)?謝謝/。
我到C++得到調用(...)方法結果的類型VARIANT * 變種。 var是.bmp圖像。SAFEARRAY *到的QByteArray
qDebug() << var.vt; //8209 ~ VT_ARRAY|VT_UI1 ~ SAFEARRAY(BYTE)
如何將其從SAFEARRAY(BYTE)轉換爲QByteArray?或者如何獲得QImage(QPixmap,QBitmap)?謝謝/。
伊戈爾,非常感謝!
long iLBound, iUBound;
char * data;
SafeArrayGetLBound(AFingerImage.parray, AFingerImage.parray->cDims, &iLBound);
SafeArrayGetUBound(AFingerImage.parray, AFingerImage.parray->cDims, &iUBound);
SafeArrayAccessData(AFingerImage.parray,(void**)(&data));
long sz = iUBound - iLBound + 1;
QByteArray ba = QByteArray::fromRawData(data,sz);
FPImage.loadFromData(ba);
SafeArrayUnaccessData(AFingerImage.parray);
沒有轉換,你必須創建一個新的QByteArray並複製元素。 –
'SAFEARRAY *'指針位於'var.parray'中。使用'SafeArrayGetLBound'和'SafeArrayGetUBound'來確定它的大小(記住邊界是包含的;大小是'ubound-lbound + 1'),'SafeArrayAccessData'獲得一個指向原始數據的指針。用'QByteArray :: fromRawData'將它包裝在'QByteArray'中。一旦完成,確保'SafeArrayUnaccessData'和'VariantClear'。 –