viernes, 12 de febrero de 2010

DISEÑO DE HUELLERO DIGITAL

import com.digitalpersona.onetouch.DPFPTemplate;
private DPFPTemplate plantilla;
private void GuardHuella (String cod) {
while (true) {
try {
File file = new File("huellas/"+cod);
if (!file.toString().toLowerCase().endsWith(".fpt"))
file = new File(file.toString() + ".fpt");
if (file.exists()) {
int choice = JOptionPane.showConfirmDialog(this,
String.format("El Archivo ya Existe ¿Quiere Sustituirlo?", file.toString()),
"Guardando Huella Digital",
JOptionPane.YES_NO_CANCEL_OPTION);
if (choice == JOptionPane.NO_OPTION)
continue;
else if (choice == JOptionPane.CANCEL_OPTION)
break;
}
FileOutputStream stream = new FileOutputStream(file);
stream.write(getTemplate().serialize());
stream.close();
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex.getLocalizedMessage(), "Guardando Huella Digital", JOptionPane.ERROR_MESSAGE);
}
break;
}
}

public DPFPTemplate getTemplate() {
return plantilla;
}
public void setTemplate(DPFPTemplate template) {
DPFPTemplate old = this.plantilla;
this.plantilla = template;
firePropertyChange(PROPIEDAD_DE_PLANTILLA, old, template);
}
package panaderia;



import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.digitalpersona.onetouch.*;
import com.digitalpersona.onetouch.capture.*;
import com.digitalpersona.onetouch.capture.event.*;
import com.digitalpersona.onetouch.processing.*;


public class CaptureForm extends JDialog
{
private DPFPCapture capturer = DPFPGlobal.getCaptureFactory().createCapture();
private JLabel jLabel2 = new JLabel();
private JTextField jtextField1 = new JTextField();
private JTextArea jTextArea1 = new JTextArea();
private JTextField status = new JTextField("[status line]");

public CaptureForm(Frame owner) {
super (owner, true);
setTitle("raul CAPTURANDO HUELLA ");

setLayout(new BorderLayout());
rootPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

jLabel2.setPreferredSize(new Dimension(240, 280));
jLabel2.setBorder(BorderFactory.createLoweredBevelBorder());
jtextField1.setFont(UIManager.getFont("Panel.font"));
jtextField1.setEditable(false);
jtextField1.setColumns(40);
jtextField1.setMaximumSize(jtextField1.getPreferredSize());
jtextField1.setBorder(
BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0), "Escaneo rapido:"),
BorderFactory.createLoweredBevelBorder()
));
jTextArea1.setColumns(40);
jTextArea1.setEditable(false);
jTextArea1.setFont(UIManager.getFont("Panel.font"));
JScrollPane logpane = new JScrollPane(jTextArea1);
logpane.setBorder(
BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0), "Status:"),
BorderFactory.createLoweredBevelBorder()
));

status.setEditable(false);
status.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
status.setFont(UIManager.getFont("Panel.font"));

JButton quit = new JButton("Cerrar ventana");
quit.setForeground(Color.red);
quit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { setVisible(false); }});
JPanel right = new JPanel(new BorderLayout());
right.setBackground(Color.getColor("control"));
right.add(jtextField1, BorderLayout.PAGE_START);
right.add(logpane, BorderLayout.CENTER);
JPanel center = new JPanel(new BorderLayout());
center.setBackground(Color.white);
center.add(right, BorderLayout.CENTER);
center.add(jLabel2, BorderLayout.LINE_START);
center.add(status, BorderLayout.PAGE_END);

JPanel bottom = new JPanel(new FlowLayout(FlowLayout.LEFT));
bottom.setBackground(Color.cyan);

bottom.add(quit);
setLayout(new BorderLayout());
add(center, BorderLayout.CENTER);
add(bottom, BorderLayout.PAGE_END);

this.addComponentListener(new ComponentAdapter() {
@Override public void componentShown(ComponentEvent e) {
init();
start();
}
@Override public void componentHidden(ComponentEvent e) {
stop();
}
});

pack();
setLocationRelativeTo(null);
}

protected void init()
{
capturer.addDataListener(new DPFPDataAdapter() {
@Override public void dataAcquired(final DPFPDataEvent e) {
SwingUtilities.invokeLater(new Runnable() { public void run() {
makeReport("LA HUELLA HA SIDO CAPTURADA.");
setPrompt("ESCANEE EL MISMO DEDO OTRA VEZ.");
process(e.getSample());
}});
}
});
capturer.addReaderStatusListener(new DPFPReaderStatusAdapter() {
@Override public void readerConnected(final DPFPReaderStatusEvent e) {
SwingUtilities.invokeLater(new Runnable() { public void run() {
makeReport("ok EL HUELLERO ESTA CONECTADO.");
}});
}
@Override public void readerDisconnected(final DPFPReaderStatusEvent e) {
SwingUtilities.invokeLater(new Runnable() { public void run() {
makeReport("EL HUELLERO HA SIDO O ESTA DESCONECTADO.");
}});
}
});
capturer.addSensorListener(new DPFPSensorAdapter() {
@Override public void fingerTouched(final DPFPSensorEvent e) {
SwingUtilities.invokeLater(new Runnable() { public void run() {
makeReport("HA TOCADO.");
}});
}
@Override public void fingerGone(final DPFPSensorEvent e) {
SwingUtilities.invokeLater(new Runnable() { public void run() {
makeReport("HA QUITADO EL DEDO.");

}});
}
});
capturer.addImageQualityListener(new DPFPImageQualityAdapter() {
@Override public void onImageQuality(final DPFPImageQualityEvent e) {
SwingUtilities.invokeLater(new Runnable() { public void run() {
if (e.getFeedback().equals(DPFPCaptureFeedback.CAPTURE_FEEDBACK_GOOD))
makeReport("La calidad de la huella es excelente.");
else
makeReport("La calidad de la huella es mala.");
}});}});
}

protected void process(DPFPSample sample)
{
// Draw fingerprint sample image.
drawPicture(convertSampleToBitmap(sample));
}

protected void start()
{
capturer.startCapture();
setPrompt("Usar el huellero para Escanear la Huella");
}

protected void stop()
{
capturer.stopCapture();
}

public void setStatus(String string) {
status.setText(string);
}
public void setPrompt(String string) {
jtextField1.setText(string);
}
public void makeReport(String string) {
jTextArea1.append(string + "\n ");
}

public void drawPicture(Image image) {
jLabel2.setIcon(new ImageIcon(
image.getScaledInstance(jLabel2.getWidth(), jLabel2.getHeight(), Image.SCALE_DEFAULT)));
}

protected Image convertSampleToBitmap(DPFPSample sample) {
return DPFPGlobal.getSampleConversionFactory().createImage(sample);
}

protected DPFPFeatureSet extractFeatures(DPFPSample sample, DPFPDataPurpose purpose)
{
DPFPFeatureExtraction extractor = DPFPGlobal.getFeatureExtractionFactory().createFeatureExtraction();
try {
return extractor.createFeatureSet(sample, purpose);
} catch (DPFPImageQualityException e) {
return null;
}}}
package panaderia;

import com.digitalpersona.onetouch.*;
import com.digitalpersona.onetouch.processing.*;
import java.awt.*;
import javax.swing.JOptionPane;

public class CargarHuella1 extends CaptureForm
{
private DPFPEnrollment enroller = DPFPGlobal.getEnrollmentFactory().createEnrollment();

CargarHuella1(Frame owner) {
super(owner);
}

@Override protected void init()
{
super.init();
this.setTitle("CAPTURANDO HUELLA");
updateStatus();
}

@Override protected void process(DPFPSample sample) {
super.process(sample);

// Process the sample and create a feature set for the enrollment purpose.
DPFPFeatureSet features = extractFeatures(sample, DPFPDataPurpose.DATA_PURPOSE_ENROLLMENT);

// Check quality of the sample and add to enroller if it's good
if (features != null) try
{
makeReport("The fingerprint feature set was created.");
enroller.addFeatures(features); // Add feature set to template.
}
catch (DPFPImageQualityException ex) { }
finally {
updateStatus();

// Check if template has been created.
switch(enroller.getTemplateStatus())
{
case TEMPLATE_STATUS_READY: // report success and stop capturing
stop();
((Administrador)getOwner()).setTemplate(enroller.getTemplate());
hide();
setPrompt("Click Close, and then click Fingerprint Verification.");
break;

case TEMPLATE_STATUS_FAILED: // report failure and restart capturing
enroller.clear();
stop();
updateStatus();
((Administrador)getOwner()).setTemplate(null);
JOptionPane.showMessageDialog(CargarHuella1.this, "The fingerprint template is not valid. Repeat fingerprint enrollment.", "Fingerprint Enrollment", JOptionPane.ERROR_MESSAGE);
start();
break;
}
}
}

private void updateStatus()
{
// Show number of samples needed.
setStatus(String.format("Fingerprint samples needed: %1$s", enroller.getFeaturesNeeded()));
}

}
package panaderia;
import com.digitalpersona.onetouch.verification.*;
import java.awt.*;
import java.sql.*;
import java.io.*;
import javax.swing.*;
import com.digitalpersona.onetouch.*;

public class VerificarHuella extends CaptureForm
{
conexion c=new conexion();

Connection conn;
private DPFPVerification verificator = DPFPGlobal.getVerificationFactory().createVerification();

VerificarHuella(Frame owner) {
super(owner);
}

@Override protected void init()
{
super.init();
this.setTitle("Escaneo de huella");
updateStatus(0);
}

@Override protected void process(DPFPSample sample) {
ResultSet resultado=null;
DPFPTemplate t=null;
int val,sw=0;
String cedula;
super.process(sample);
try
{
resultado=buscar();
while(resultado.next())
{
// JOptionPane.showMessageDialog(VerificarHuella.this, "entre al while ");
cedula=resultado.getString("cedula");
t=onLoad(cedula);

val=verificar(sample,t);
if (val==1)
{
sw=1;
this.hide();
Principal1 p=new Principal1();
p.setVisible(true);
this.hide();

break;
}}
if(sw==0)
JOptionPane.showMessageDialog(VerificarHuella.this, "Usted no esta autorizado");
}
catch(Exception e)

{
JOptionPane.showMessageDialog(null," ERROR: NO SE PUEDE CONECTAR: "+e);
}

}


public int verificar(DPFPSample sample, DPFPTemplate template)
{
DPFPFeatureSet features = extractFeatures(sample, DPFPDataPurpose.DATA_PURPOSE_VERIFICATION);


// Check quality of the sample and start verification if it's good
if (features != null)
{
// Compare the feature set with our template
DPFPVerificationResult result =
verificator.verify(features, template);
updateStatus(result.getFalseAcceptRate());
if (result.isVerified())
{
makeReport("***VALIDACION HA SIDO CORRECTA****.");
return 1;
}

else
{makeReport("???? VALIDACION INCORRETA???.");
return 0;
}}

return 0;
}


private void updateStatus(int FAR)
{
// Show "False accept rate" value
setStatus(String.format("False Accept Rate (FAR) = %1$s", FAR));
}
public ResultSet buscar()
{
ResultSet resultado=null;
String instruccion;
try{
c.Conex("panaderia", "0000");
instruccion="SELECT CEDULA FROM administradores where huella= 's' ";
resultado = c.consulta(instruccion);
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null, "error" + e);
}
return resultado;
}

private DPFPTemplate onLoad(String cod) {
/*JFileChooser chooser = new JFileChooser();
chooser.addChoosableFileFilter(new TemplateFileFilter());
if(chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)*/ {
try {
// FileInputStream stream = new FileInputStream(chooser.getSelectedFile());
FileInputStream stream = new FileInputStream("bancodehuellas/"+cod+".fpt");
byte[] data = new byte[stream.available()];
stream.read(data);
stream.close();
DPFPTemplate t = DPFPGlobal.getTemplateFactory().createTemplate();
t.deserialize(data);
return t;
//setTemplate(t);
} catch (Exception ex) {
JOptionPane.showMessageDialog(this,"Error: "+ex, "Cargando Huella", JOptionPane.ERROR_MESSAGE);
}
}
return null;
}}

1 comentario:

  1. Hola , disculpa de por casualidad tienes el main de ese codigo ? ( que creo que sale parte de el al principio ). Gracias.
    prohuntersniper@gmail.com

    ResponderEliminar