我一直在开发一个小型应用程序,以在扫描3次后获取指纹。我使用了ZKFingerSDK,当尝试获取套准指纹时,它将图像带回黑色。我正在使用ZK9500设备
if (RegisterCount >= REGISTER_FINGER_COUNT && !bIdentify)
{
RegisterCount = 0;
ret = GenerateRegisteredFingerPrint(); // <--- GENERATE FINGERPRINT TEMPLATE
if (zkfp.ZKFP_ERR_OK == ret)
{
ret = AddTemplateToMemory(); // <--- LOAD TEMPLATE TO MEMORY
if (zkfp.ZKFP_ERR_OK == ret) // <--- ENROLL SUCCESSFULL
{
string fingerPrintTemplate = string.Empty;
zkfp.Blob2Base64String(newRegTmp, cbCapTmp, ref fingerPrintTemplate);
newRegTmp = zkfp.Base64String2Blob(fingerPrintTemplate);
Bitmap bmp2;
MemoryStream ms2 = new MemoryStream();
BitmapFormat.GetBitmap(newRegTmp, mfpWidth, mfpHeight, ref ms2);
bmp2 = new Bitmap(ms2);
this.pictureBox1.Image = bmp2;
Console.WriteLine("finger print" + fingerPrintTemplate);
textRes.AppendText("merged " + fingerPrintTemplate + "\n");
}
}
}
答案 0 :(得分:2)
我假设ret = AddTemplateToMemory();
将模板加载到newRegTmp中。
zkfp.Blob2Base64String(newRegTmp, cbCapTmp, ref fingerPrintTemplate);
从这一行开始,我了解到您在newRegTmp上拥有指纹的原始数据,并且正在将cbCapTmp的大小提取到fingerPrintTemplate中。
在这种情况下,您不应在下一行newRegTmp =zkfp.Base64String2Blob(fingerPrintTemplate);
中使用newRegTmp,它会用Base64字符串覆盖实际数据。您可以使用Base64字符串在带有img标签的网页上显示图像。但是要将原始数据转换为图像,您需要将实际数据传递给GetBitMap。
如果以上建议不起作用,请共享AddTemplateToMemory的实现。