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); } }
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); } }