【解決方法】フィンガープリントの fmd をデータベースに保存して抽出する


digitalPersona が提供する文書に基づいて FMD を取得する方法を知りたいのですが、FMD はデータベースに保存するために使用されます。 指定されたコードに基づいて、FMD は正常に作成されたと示されていますが、保存されません。 ドキュメントには、FMD は一時的にメモリに保存され、プログラムを終了すると削除されると記載されています。 そこで、その FMD を使用して永続的に保存することにしたので、それを取得する方法を知る必要があります。

C#
private void OnCaptured(CaptureResult captureResult)
        {
            try
            {
                // Check capture quality and throw an error if bad.
                if (!_sender.CheckCaptureResult(captureResult)) return;

                count++;

                DataResult<Fmd> resultConversion = FeatureExtraction.CreateFmdFromFid(captureResult.Data, Constants.Formats.Fmd.ANSI);
   
                SendMessage(Action.SendMessage, "A finger was captured.  \r\nCount:  " + (count));

                if (resultConversion.ResultCode != Constants.ResultCode.DP_SUCCESS)
                {
                    _sender.Reset = true;
                    throw new Exception(resultConversion.ResultCode.ToString());
                }

                preenrollmentFmds.Add(resultConversion.Data);

                if (count >= 4)
                {
                    DataResult<Fmd> resultEnrollment = DPUruNet.Enrollment.CreateEnrollmentFmd(Constants.Formats.Fmd.ANSI, preenrollmentFmds);

                    if (resultEnrollment.ResultCode == Constants.ResultCode.DP_SUCCESS)
                    {
                        SendMessage(Action.SendMessage, "An enrollment FMD was successfully created.");
                        SendMessage(Action.SendMessage, "Place a finger on the reader.");
                        preenrollmentFmds.Clear();
                        count = 0;
                        return;
                    }
                    else if (resultEnrollment.ResultCode == Constants.ResultCode.DP_ENROLLMENT_INVALID_SET)
                    {
                        SendMessage(Action.SendMessage, "Enrollment was unsuccessful.  Please try again.");
                        SendMessage(Action.SendMessage, "Place a finger on the reader.");
                        preenrollmentFmds.Clear();
                        count = 0;
                        return;
                    }
                }

                SendMessage(Action.SendMessage, "Now place the same finger on the reader.");
            }
            catch (Exception ex)
            {
                // Send error message, then close form
                SendMessage(Action.SendMessage, "Error:  " + ex.Message);                
            }  
        }

私が試したこと:

デジタル ペルソナから提供された SDK を見つけ、提供されたドキュメントを読みました。確認しましたが、まだわかりません。

解決策 2

必要なのは、結果の登録 fmd を xmlserialized して db に保存することです。これは取得時に逆シリアル化されますが、セキュリティの問題を考慮してデータをハッシュするか、ソルトを追加することさえできます

Fmd.serializedXml(fmd);
回収時
Fmd.DeserializedXml(fmd);

コメント

タイトルとURLをコピーしました