首页 > 解决方案 > ZKTeco 将 3 指纹 C# 与 ZKFingerSDK 合并

问题描述

我一直在开发一个小型应用程序,以在 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");
        }
    }
}

标签: c#zkteco

解决方案


我假设ret = AddTemplateToMemory();将模板加载到 newRegTmp 中。

zkfp.Blob2Base64String(newRegTmp, cbCapTmp, ref fingerPrintTemplate);从这一行我了解到您在 newRegTmp 处拥有指纹的原始数据,并且您正在将 cbCapTmp 的大小提取到 fingerPrintTemplate 中。

在这种情况下,您不应该在下一行中使用 newRegTmp newRegTmp =zkfp.Base64String2Blob(fingerPrintTemplate);,它会用 Base64 字符串覆盖实际数据。您可以使用 Base64 字符串在带有 img 标签的网页上显示图像。但是要将原始数据转换为图像,您需要将实际数据传递给 GetBitMap。

如果上述建议不起作用,请分享 AddTemplateToMemory 的实现。


推荐阅读