-
-
Save manniru/85688df542fea80e107b to your computer and use it in GitHub Desktop.
| package com.mma.fingerprint; | |
| import java.sql.Connection; | |
| import java.sql.DriverManager; | |
| import java.sql.PreparedStatement; | |
| import java.sql.ResultSet; | |
| import java.sql.SQLException; | |
| import java.util.EnumMap; | |
| import java.util.concurrent.LinkedBlockingQueue; | |
| import com.digitalpersona.onetouch.*; | |
| import com.digitalpersona.onetouch.capture.DPFPCapture; | |
| import com.digitalpersona.onetouch.capture.DPFPCapturePriority; | |
| import com.digitalpersona.onetouch.capture.event.DPFPDataEvent; | |
| import com.digitalpersona.onetouch.capture.event.DPFPDataListener; | |
| import com.digitalpersona.onetouch.capture.event.DPFPReaderStatusAdapter; | |
| import com.digitalpersona.onetouch.capture.event.DPFPReaderStatusEvent; | |
| import com.digitalpersona.onetouch.processing.DPFPEnrollment; | |
| import com.digitalpersona.onetouch.processing.DPFPFeatureExtraction; | |
| import com.digitalpersona.onetouch.processing.DPFPImageQualityException; | |
| import com.digitalpersona.onetouch.readers.DPFPReaderDescription; | |
| import com.digitalpersona.onetouch.readers.DPFPReadersCollection; | |
| import com.digitalpersona.onetouch.ui.swing.*; | |
| import com.digitalpersona.onetouch.verification.DPFPVerification; | |
| import com.digitalpersona.onetouch.verification.DPFPVerificationResult; | |
| public class DigitalPersona { | |
| //static EnumMap<DPFPFingerIndex, DPFPTemplate> templates; | |
| static EnumMap<DPFPFingerIndex, DPFPTemplate> templates = new EnumMap<DPFPFingerIndex, DPFPTemplate>(DPFPFingerIndex.class); | |
| public static void main(String[] args) { | |
| listReaders(); | |
| DigitalPersona dp = new DigitalPersona(); | |
| DPFPTemplate temp = dp.getTemplate(null, 1); | |
| byte[] b = temp.serialize(); | |
| dp.insert(1, b); | |
| b = dp.get(); | |
| DPFPTemplate temp2 = DPFPGlobal.getTemplateFactory().createTemplate(); | |
| temp2.deserialize(b); | |
| if (dp.verify(null, temp)) | |
| System.out.println("Finger Verified!"); | |
| else | |
| System.out.println("Finger not verify!"); | |
| //boolean verify = dp.verify(null, template); | |
| //System.out.println(verify); | |
| //DPFPEnrollmentEvent e = null; | |
| //templates.put(e.getFingerIndex(), e.getTemplate()); | |
| } | |
| public Connection cn() { | |
| Connection conn = null; | |
| try { Class.forName("com.mysql.jdbc.Driver"); | |
| conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/fingerprint", "root", ""); | |
| } catch(Exception e) { System.out.println(e); } | |
| return conn; | |
| } | |
| public void insert(int id, byte[] digital){ | |
| PreparedStatement st; | |
| try { | |
| st = cn().prepareStatement("INSERT INTO users(username, f1) VALUES(?, ?)"); | |
| st.setInt(1, id); | |
| st.setBytes(2, digital); | |
| st.executeUpdate(); | |
| } catch (SQLException e) { System.out.println(e.getMessage()); } | |
| } | |
| public byte[] get(){ | |
| ResultSet rs; | |
| PreparedStatement st; | |
| byte[] digital = null; | |
| try { | |
| st = cn().prepareStatement("SELECT * FROM users"); | |
| rs = st.executeQuery(); | |
| if(rs.next()) | |
| digital = rs.getBytes("f1"); | |
| else | |
| System.out.println("Record not available"); | |
| } catch (Exception e) { | |
| System.out.println(e.getMessage()); | |
| } | |
| return digital; | |
| } | |
| public static void listReaders() { | |
| DPFPReadersCollection readers = DPFPGlobal.getReadersFactory().getReaders(); | |
| if (readers == null || readers.size() == 0) { | |
| System.out.printf("There are no readers available.\n"); | |
| return; | |
| } | |
| System.out.printf("Available readers:\n"); | |
| for (DPFPReaderDescription readerDescription : readers) | |
| System.out.println(readerDescription.getSerialNumber()); | |
| } | |
| public static final EnumMap<DPFPFingerIndex, String> fingerNames; | |
| static { | |
| fingerNames = new EnumMap<DPFPFingerIndex, String>(DPFPFingerIndex.class); | |
| fingerNames.put(DPFPFingerIndex.LEFT_PINKY, "left pinky"); | |
| fingerNames.put(DPFPFingerIndex.LEFT_RING, "left ring"); | |
| fingerNames.put(DPFPFingerIndex.LEFT_MIDDLE, "left middle"); | |
| fingerNames.put(DPFPFingerIndex.LEFT_INDEX, "left index"); | |
| fingerNames.put(DPFPFingerIndex.LEFT_THUMB, "left thumb"); | |
| fingerNames.put(DPFPFingerIndex.RIGHT_PINKY, "right pinky"); | |
| fingerNames.put(DPFPFingerIndex.RIGHT_RING, "right ring"); | |
| fingerNames.put(DPFPFingerIndex.RIGHT_MIDDLE, "right middle"); | |
| fingerNames.put(DPFPFingerIndex.RIGHT_INDEX, "right index"); | |
| fingerNames.put(DPFPFingerIndex.RIGHT_THUMB, "right thumb"); | |
| } | |
| public DPFPTemplate getTemplate(String activeReader, int nFinger) { | |
| System.out.printf("Performing fingerprint enrollment...\n"); | |
| DPFPTemplate template = null; | |
| try { | |
| DPFPFingerIndex finger = DPFPFingerIndex.values()[nFinger]; | |
| DPFPFeatureExtraction featureExtractor = DPFPGlobal.getFeatureExtractionFactory().createFeatureExtraction(); | |
| DPFPEnrollment enrollment = DPFPGlobal.getEnrollmentFactory().createEnrollment(); | |
| while (enrollment.getFeaturesNeeded() > 0) | |
| { | |
| DPFPSample sample = getSample(activeReader, | |
| String.format("Scan your %s finger (%d remaining)\n", fingerName(finger), enrollment.getFeaturesNeeded())); | |
| if (sample == null) | |
| continue; | |
| DPFPFeatureSet featureSet; | |
| try { | |
| featureSet = featureExtractor.createFeatureSet(sample, DPFPDataPurpose.DATA_PURPOSE_ENROLLMENT); | |
| } catch (DPFPImageQualityException e) { | |
| System.out.printf("Bad image quality: \"%s\". Try again. \n", e.getCaptureFeedback().toString()); | |
| continue; | |
| } | |
| enrollment.addFeatures(featureSet); | |
| } | |
| template = enrollment.getTemplate(); | |
| System.out.printf("The %s was enrolled.\n", fingerprintName(finger)); | |
| } catch (DPFPImageQualityException e) { | |
| System.out.printf("Failed to enroll the finger.\n"); | |
| } catch (InterruptedException e) { | |
| throw new RuntimeException(e); | |
| } | |
| return template; | |
| } | |
| public boolean verify(String activeReader, DPFPTemplate template) { | |
| try { | |
| DPFPSample sample = getSample(activeReader, "Scan your finger\n"); | |
| if (sample == null) | |
| throw new Exception(); | |
| DPFPFeatureExtraction featureExtractor = DPFPGlobal.getFeatureExtractionFactory().createFeatureExtraction(); | |
| DPFPFeatureSet featureSet = featureExtractor.createFeatureSet(sample, DPFPDataPurpose.DATA_PURPOSE_VERIFICATION); | |
| DPFPVerification matcher = DPFPGlobal.getVerificationFactory().createVerification(); | |
| matcher.setFARRequested(DPFPVerification.MEDIUM_SECURITY_FAR); | |
| for (DPFPFingerIndex finger : DPFPFingerIndex.values()) { | |
| //DPFPTemplate template = user.getTemplate(finger); | |
| if (template != null) { | |
| DPFPVerificationResult result = matcher.verify(featureSet, template); | |
| if (result.isVerified()) { | |
| System.out.printf("Matching finger: %s, FAR achieved: %g.\n", | |
| fingerName(finger), (double)result.getFalseAcceptRate()/DPFPVerification.PROBABILITY_ONE); | |
| return result.isVerified(); | |
| } | |
| } | |
| } | |
| } catch (Exception e) { | |
| System.out.printf("Failed to perform verification."); | |
| } | |
| return false; | |
| } | |
| public DPFPSample getSample(String activeReader, String prompt) | |
| throws InterruptedException | |
| { | |
| final LinkedBlockingQueue<DPFPSample> samples = new LinkedBlockingQueue<DPFPSample>(); | |
| DPFPCapture capture = DPFPGlobal.getCaptureFactory().createCapture(); | |
| capture.setReaderSerialNumber(activeReader); | |
| capture.setPriority(DPFPCapturePriority.CAPTURE_PRIORITY_LOW); | |
| capture.addDataListener(new DPFPDataListener() | |
| { | |
| public void dataAcquired(DPFPDataEvent e) { | |
| if (e != null && e.getSample() != null) { | |
| try { | |
| samples.put(e.getSample()); | |
| } catch (InterruptedException e1) { | |
| e1.printStackTrace(); | |
| } | |
| } | |
| } | |
| }); | |
| capture.addReaderStatusListener(new DPFPReaderStatusAdapter() | |
| { | |
| int lastStatus = DPFPReaderStatusEvent.READER_CONNECTED; | |
| public void readerConnected(DPFPReaderStatusEvent e) { | |
| if (lastStatus != e.getReaderStatus()) | |
| System.out.println("Reader is connected"); | |
| lastStatus = e.getReaderStatus(); | |
| } | |
| public void readerDisconnected(DPFPReaderStatusEvent e) { | |
| if (lastStatus != e.getReaderStatus()) | |
| System.out.println("Reader is disconnected"); | |
| lastStatus = e.getReaderStatus(); | |
| } | |
| }); | |
| try { | |
| capture.startCapture(); | |
| System.out.print(prompt); | |
| return samples.take(); | |
| } catch (RuntimeException e) { | |
| System.out.printf("Failed to start capture. Check that reader is not used by another application.\n"); | |
| throw e; | |
| } finally { | |
| capture.stopCapture(); | |
| } | |
| } | |
| public String fingerName(DPFPFingerIndex finger) { | |
| return fingerNames.get(finger); | |
| } | |
| public String fingerprintName(DPFPFingerIndex finger) { | |
| return fingerNames.get(finger) + " fingerprint"; | |
| } | |
| } |
plz i will also like to know the logic behind this too
thanks..
Once downloaded the project with all its jar files, I do not find where these packages are:
import com.digitalpersona.uareu.Engine;
import com.digitalpersona.uareu.Engine.Candidate;
import com.digitalpersona.uareu.Fid;
import com.digitalpersona.uareu.Fmd;
import com.digitalpersona.uareu.Fmd.Format;
import com.digitalpersona.uareu.Reader;
import com.digitalpersona.uareu.UareUException;
import com.digitalpersona.uareu.UareUGlobal;
Please, can someone help me?
CarlesFranquesa.
Do you import the jar file dpotapi?
it is necessary to execute all digitalPerson relative applications.
https://github.com/Eliezer090/JavaLibsPersonal
Libs necessária para esse .java
Thank You so much manniru..
this is what im looking for a long time.
i run the program with little editing and success.
Best of Luck.
another question, please
I made the DB with MYSQL. the data type for finger template I made is Blob.
I need to store it in binary.
can you advise me, please
what function i will convert it to binary? and then also verified it in binary.?
Please, can you kindly upload a read me file showing the data and their respective types being passed to the database
//please sir what sdk did you use for this is it flexcode or ...?
hi please i am trying to do this fingerprint stuff using javafx and i have been running into some problems and i need help with it.
i have been reading on this trying to graps the logic behind makig such type of application and i will need help to full understand it.
plz i will like to know which sdk you used for this and how i can get it.
am seeing you using various import eg import com.digitalpersona.onetouch.processing.DPFPEnrollment;
how did you come about them is it part of the sdk?