コード例 #1
0
        internal bool SaveActiveUserFingerRecords(NFinger finger, NSubject fingerSubject, FingerDescription fingerDescription)
        {
            try
            {
                var buffArray = fingerSubject?.GetTemplateBuffer().ToArray();

                var fRecord = new FingerImageRecord
                {
                    FingerIndex       = GetFingerIndex(fingerDescription),
                    FingerDescription = fingerDescription,
                    FingerRecord      = finger?.Objects[0].Template,
                    FingerSubject     = fingerSubject,
                    FingerTemplate    = buffArray
                };

                if (finger != null)
                {
                    var wsq = finger.Image.Save(NImageFormat.Wsq);
                    fRecord.FingerImage = finger.Image.ToBitmap();
                    fRecord.FingerWsq   = wsq?.ToArray();
                    int fingersCount = 0;
                    var status       = CheckDuplicate(fRecord);
                    return(status);
                }
                return(false);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return(false);
            }
        }
コード例 #2
0
        private bool CheckDuplicate(FingerImageRecord fRecord)
        {
            try
            {
                if (FingerprintRecords.Count == 0)
                {
                    FingerprintRecords.Add(fRecord);
                    return(true);
                }

                //NBuffer .GetTemplateBuffer()

                using (var biometricClient = new NBiometricClient())
                {
                    // Set matching threshold
                    biometricClient.MatchingThreshold = (int)Settings.Default.MatchingScore;

                    // Set matching speed
                    biometricClient.FingersMatchingSpeed = NMatchingSpeed.Low;

                    var matcherFound = false;
                    FingerprintRecords.ForEach(item =>
                    {
                        if (item.FingerTemplate != null)
                        {
                            var status = biometricClient.Verify(fRecord.FingerSubject, item.FingerSubject);
                            if (status == NBiometricStatus.Ok)
                            {
                                matcherFound = true;
                                item         = fRecord;
                            }
                        }
                    });

                    if (matcherFound)
                    {
                        return(false);
                    }
                    FingerprintRecords.Add(fRecord);
                    return(true);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, @"Process Fingerprint");
                return(false);
            }
        }