【问题标题】:How to Serialize the fingerprint of Digital Persona in C# and saved to a database如何在 C# 中序列化数字角色的指纹并保存到数据库
【发布时间】:2018-11-08 00:24:21
【问题描述】:

我下载了一个注册示例代码供我的 digitalPersona 设备使用。它可能已经注册并验证了指纹,但问题是它将其指纹 .fpt 文件保存在一个文件夹中。我想把它保存在数据库中。

我无法序列化 FMD objetc 类型的指纹,

private void OnCaptured(CaptureResult captureResult)
{

    try
    {
        //check capture quality and throw an error if bad
        if (!_sender.CheckCaptureResult(captureResult)) return;

        SendMessage(Action.SendMessage, "la huella se capturo");

        DataResult<Fmd> resultConversion = FeatureExtraction.CreateFmdFromFid(captureResult.Data, Constants.Formats.Fmd.ANSI);
        if (captureResult.ResultCode != Constants.ResultCode.DP_SUCCESS)
        {
            _sender.Reset = true;
            throw new Exception(captureResult.ResultCode.ToString());
        }

        if (count == 0)
        {
            indiceDr = resultConversion.Data;
            XmlSerializer xml = new XmlSerializer(resultConversion.GetType());
            StringBuilder sb = new StringBuilder();
            StringWriter writer = new StringWriter(sb);
            xml.Serialize(writer,resultConversion);
            count += 1;
            SendMessage(Action.SendMessage, "Ahora coloca tu pulgar en el lector");
            SendMessage(Action.SendMessage, "gethashcode = "+sb.ToString());
        }
        else if (count == 1)
        {
            pulgarDr = resultConversion.Data;
            count += 1;
            SendMessage(Action.SendMessage, "Ahora coloca cualquier dedo en el lector");
        }
        else if (count == 2)
        {
            AnyFinger = resultConversion.Data;
            Fmd[] fmds = new Fmd[2];
            fmds[0] = indiceDr;
            fmds[1] = pulgarDr;

            //Verificar la documentacion del SDK
            int thresholdScore = DPFJ_PROBABILITY_ONE * 1 / 10000;

            IdentifyResult identifyResult = Comparison.Identify(AnyFinger,0,fmds, thresholdScore, 2);
            if (identifyResult.ResultCode != Constants.ResultCode.DP_SUCCESS)
            {
                _sender.Reset = true;
                throw new Exception(identifyResult.ResultCode.ToString());
            }

            SendMessage(Action.SendMessage,"Resultado de la identificación " + identifyResult.Indexes.Length.ToString());
            SendMessage(Action.SendMessage, "coloca el indice" );
            count = 0;
        }
    }
    catch (Exception ex)
    {
        SendMessage(Action.SendMessage, "Error" + ex.Message);
    }
}

【问题讨论】:

    标签: c# fingerprint


    【解决方案1】:

    您可以这样在 XML 中序列化:

    tempFingerPrint = Fmd.SerializeXml(resultConversion.Data);
    

    【讨论】:

      【解决方案2】:

      好吧,我建议你以 byte[] 格式导入和导出 Fmd 数据。

      Fmd > 获取 byte[] > 将 byte[] 转换为 base64

      然后

      base64 > 解码为 byte[] > 然后导入到 Fmd

      我指的是 C# 在 Java 中的导出和导入。
      导出 (C#)

      Fmd fmd = resultConversion.Data;    
      string base64Fmd = Convert.ToBase64String(fmd.Bytes)
      

      导入(Java)

      byte[] bFmd = Base64.getDecoder().decode(base64Fmd.getBytes("UTF-8"));    
      Fmd fmd = UareUGlobal.GetImporter().ImportFmd(bytes1, Fmd.Format.ANSI_378_2004, Fmd.Format.ANSI_378_2004)
      

      我使用技术,因为我在 Java 库 dpuareu.jar 中找不到函数 SerializeXmlDeserializeXml
      所以,这是我发现导入和导出 Fmd 的唯一方法。
      然而,

      这不会限制你使用Java或C#,你可以将它们结合起来

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-03
        • 2017-06-04
        • 1970-01-01
        相关资源
        最近更新 更多