Package

Source Code of Presente

//import WebCam.Webcam;
//import hep.aida.ref.Converter;

import javax.swing.JFileChooser;
import javax.swing.SwingUtilities;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.JFrame;

import java.awt.Color;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Toolkit;

import javax.swing.JButton;
import javax.swing.JComboBox;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import javax.imageio.ImageIO;
import javax.swing.border.BevelBorder;
import javax.swing.border.TitledBorder;
import javax.swing.*;

import java.awt.color.ColorSpace;
import java.awt.event.ActionEvent;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.awt.image.DataBufferByte;
import java.awt.image.RenderedImage;
import java.awt.image.WritableRaster;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import de.humatic.dsj.DSCapture;
import de.humatic.dsj.DSFilterInfo;
import de.humatic.dsj.DSFiltergraph;









import java.util.HashMap;


public class Presente extends JFrame implements PropertyChangeListener  {

  private static final long serialVersionUID = 1L;

  private JPanel jContentPane = null;
  private JButton jbtCapturaImagem = null;
 
  private List<DSFilterInfo> filterInfoList = null;
  private HashMap<String, DSFilterInfo> hashCams = new HashMap<String, DSFilterInfo>();
  private JPanel jPanelImagem = null;
  private JPanel jPanelImagem1 = null;
 

  private DSCapture graph;
  private DSFilterInfo[][] dsivideo;
  DSFilterInfo[][] dsi = DSCapture.queryDevices();
  DSFilterInfo[][] dsiVideo = DSCapture.queryDevices(DSCapture.SKIP_AUDIO);
  private JButton jbtIniciarImagem = null;
  private JButton jbtLimparImagem = null;
  private JButton jbtSalvarImagem = null;
  private JButton jbtComparar = null;
  private JLabel jlbTitulo = null;
  private JLabel jlbBlog = null;

  private JButton getJbtCapturaImagem() {
    if (jbtCapturaImagem == null) {
      jbtCapturaImagem = new JButton();
      jbtCapturaImagem.setBounds(new Rectangle(310, 500, 122, 36));
      jbtCapturaImagem.setText("Captura");
      jbtCapturaImagem.setToolTipText("Captura");
      jbtCapturaImagem.setCursor(new Cursor(Cursor.HAND_CURSOR));
     
      jbtCapturaImagem.setEnabled(false);
      jbtCapturaImagem
          .addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent e) {
              // para a imagem da camera
              graph.stop();

              jbtCapturaImagem.setEnabled(false);
              jbtLimparImagem.setEnabled(true);
              jbtSalvarImagem.setEnabled(true);
            }
          });
    }
    return jbtCapturaImagem;
  }

 

    private JPanel getJPanelImagem() {
    if (jPanelImagem == null) {

      jPanelImagem = new JPanel();
      jPanelImagem.setLayout(null);
      jPanelImagem.setBounds(new Rectangle(10, 60, 220, 270));
      jPanelImagem.setBorder(BorderFactory.createTitledBorder(
          BorderFactory.createBevelBorder(BevelBorder.LOWERED),
          "Camera", TitledBorder.CENTER,
          TitledBorder.DEFAULT_POSITION, new Font("Arial", Font.BOLD,
              18), new Color(2, 144, 255)));
    }

   
    return jPanelImagem;
   
  }
/****************************************/

    private JPanel getJPanelImagem1() { // imagem a ser comparada
    if (jPanelImagem1 == null) {

      jPanelImagem1 = new JPanel();
      jPanelImagem1.setLayout(null);
      jPanelImagem1.setBounds(new Rectangle(300, 60, 220, 270));
      jPanelImagem1.setBorder(BorderFactory.createTitledBorder(
          BorderFactory.createBevelBorder(BevelBorder.LOWERED),
          "Imagem", TitledBorder.CENTER,
          TitledBorder.DEFAULT_POSITION, new Font("Arial", Font.BOLD,
              18), new Color(2, 144, 255)));
    }
    return jPanelImagem1;
  }
   
    private JButton getjbtComparar() {
      if (jbtComparar == null) {
        jbtComparar = new JButton();
        jbtComparar.setBounds(new Rectangle(400, 400, 122, 36));
        jbtComparar.setText("Comparar");
        jbtComparar.setToolTipText("Comparar");
        jbtComparar.setCursor(new Cursor(Cursor.HAND_CURSOR));
        jbtComparar.setEnabled(false);
        jbtComparar
            .addActionListener(new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent e) {

                clearImage();
                jbtLimparImagem.setEnabled(false);
                jbtSalvarImagem.setEnabled(false);
                jbtIniciarImagem.setEnabled(true);
              }
            });
      }
      return jbtComparar;
    }
/***************************************/

  private JButton getJbtIniciarImagem() {
    if (jbtIniciarImagem == null) {
      jbtIniciarImagem = new JButton();
      jbtIniciarImagem.setBounds(new Rectangle(30, 500, 122, 36));
      jbtIniciarImagem.setText("Start");
      jbtIniciarImagem.setToolTipText("Start");
      jbtIniciarImagem.setCursor(new Cursor(Cursor.HAND_CURSOR));
      jbtIniciarImagem
          .addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent e) {
              try {
                clearImage();
                comCamerasActionPerformed(null);
                jPanelImagem.add(graph.asComponent());
                graph.setPreview();
                jbtIniciarImagem.setEnabled(false);
                jbtCapturaImagem.setEnabled(true);
              } catch (Exception ex) {

              }
            }
          });
    }
    return jbtIniciarImagem;
  }

  private JButton getJbtLimparImagem() {
    if (jbtLimparImagem == null) {
      jbtLimparImagem = new JButton();
      jbtLimparImagem.setBounds(new Rectangle(450, 500, 122, 36));
      jbtLimparImagem.setText("Limpar");
      jbtLimparImagem.setToolTipText("Limpar");
      jbtLimparImagem.setCursor(new Cursor(Cursor.HAND_CURSOR));
      jbtLimparImagem.setEnabled(false);
      jbtLimparImagem
          .addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent e) {

              clearImage();
              jbtLimparImagem.setEnabled(false);
              jbtSalvarImagem.setEnabled(false);
              jbtIniciarImagem.setEnabled(true);
            }
          });
    }
    return jbtLimparImagem;
  }

  private JButton getJbtSalvarImagem() {
    if (jbtSalvarImagem == null) {
      jbtSalvarImagem = new JButton();
      jbtSalvarImagem.setBounds(new Rectangle(170, 500, 122, 36));
      jbtSalvarImagem.setText("Salvar");
      jbtSalvarImagem.setToolTipText("Salvar");
      jbtSalvarImagem.setCursor(new Cursor(Cursor.HAND_CURSOR));
      jbtSalvarImagem.setEnabled(false);     
      jbtSalvarImagem
            .addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent e) {
             
     
              record();
              jbtLimparImagem.setEnabled(false);
              jbtSalvarImagem.setEnabled(false);
              jbtIniciarImagem.setEnabled(true);

            }
          });
    }
    return jbtSalvarImagem;
  }

  public static void main(String[] args)  {
   
   
   
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        Presente thisClass = new Presente();
        thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        thisClass.setVisible(true);
       
       
      }
     
    });
   
        }
   
 

 



  public Presente() {
    super();
    initialize();

    chargeCams();

  }

  private void initialize() {
    this.setSize(600, 600);
    this.setContentPane(getJContentPane());
    this.setTitle(" Prsente Professor 1.0");
    // Tamanho fixo do programa, sem alte��o
    this.setResizable(false);
    // Deixa o programa no meio da tela, centralizado
    this.setLocationRelativeTo(null);
  }

  private JPanel getJContentPane() {
    if (jContentPane == null) {
      jlbBlog = new JLabel();
      jlbBlog.setBounds(new Rectangle(129, 550, 199, 18));
      // Centraliza um texto em uma Label
      jlbBlog.setHorizontalAlignment(SwingConstants.CENTER);
      jlbBlog.setText("http://disciplinas.dcc.ufba.br/MATA54/WebHome");
      jlbBlog.setToolTipText("Blog");
      jlbBlog.setCursor(new Cursor(Cursor.HAND_CURSOR));
      jlbBlog.setForeground(Color.BLUE);
      jlbBlog.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseClicked(java.awt.event.MouseEvent e) {
          // Pega o valor da url
          String url = "http://disciplinas.dcc.ufba.br/MATA54/WebHome";
          // Passa valor da URL para classe que realiza a
          // abertura do Browser
          //BareBonesBrowserLaunch.openURL(url);
        }
      });

      jlbTitulo = new JLabel();
      jlbTitulo.setBounds(new Rectangle(1, 1, 580, 40));
      jlbTitulo.setFont(new Font("Arial", Font.BOLD, 28));
      // Centraliza um texto em uma Label
      jlbTitulo.setHorizontalAlignment(SwingConstants.CENTER);
      jlbTitulo.setText("Presente Professor");

      jContentPane = new JPanel();
      jContentPane.setLayout(null);
      jContentPane.add(getJbtCapturaImagem(), null);
      jContentPane.add(getJPanelImagem1(),null);
      jContentPane.add(getjbtComparar(),null);
      jContentPane.add(getJPanelImagem(), null);
      jContentPane.add(getJbtIniciarImagem(), null);
      jContentPane.add(getJbtLimparImagem(), null);
      jContentPane.add(getJbtSalvarImagem(), null);
      jContentPane.add(jlbTitulo, null);
      jContentPane.add(jlbBlog, null);
    }
    return jContentPane;
  }

  public void propertyChange(PropertyChangeEvent evt) {

  }

  public List<DSFilterInfo> getVideoDevices() {
    DSFilterInfo[][] lista = null;
    try {
      lista = DSCapture.queryDevices();
    } catch (Exception e) {
      e.printStackTrace();
    }
    return Arrays.asList(lista[0]);
  }

  // Metodo mudar cameras
  public void chargeCams() {
    try {
      filterInfoList = getVideoDevices();
      String[] camNames = new String[filterInfoList.size()];
      camNames[0] = "";
      for (int i = 0; i < filterInfoList.size(); i++) {
        if (!filterInfoList.get(i).getName().equalsIgnoreCase("none")) {
          camNames[i + 1] = filterInfoList.get(i).getName();
          hashCams.put(filterInfoList.get(i).getName(),
              filterInfoList.get(i));
        }
      }

    //comCameras.setModel(new DefaultComboBoxModel<Object>(camNames));
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  private void comCamerasActionPerformed(ActionEvent e) {
    dsivideo = DSCapture.queryDevices(DSCapture.SKIP_AUDIO);
    graph = new DSCapture(DSFiltergraph.RENDER_NATIVE, dsivideo[0][0],
        false, DSFilterInfo.doNotRender(), this);
    // Largura e Altura da imagem
    graph.setSize(800, 600);
    BufferedImage recorte = graph.getImage().getSubimage(175, 150, 250, 300);
    jPanelImagem.add(recorte);
    //graph.setPreview();

  }

  // Metodo capturar imagem
  public BufferedImage getImage() {
    if (graph == null) {
      return null;
    } else {
      return graph.getImage();
    }
  }

  // Metodo Salvar imagem
 
  public void record() {
    try {
     
     
      BufferedImage image1=null, image2 = null;
      image1 = graph.getImage();
      image2 = image1.getSubimage(275, 150, 250, 300);
      ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
      ColorConvertOp op = new ColorConvertOp(cs, null)
      image1 = op.filter(image2, null);
      BufferedImage image3 = image1.getSubimage(0, 0, 125, 150);
      File outputfile = new File("C://temp.png");
      JFileChooser jf = new JFileChooser();
      jf.setMultiSelectionEnabled(false);
      jf.showSaveDialog(jPanelImagem);
      if (jf.getSelectedFile() != null) {
        ImageIO.write(image3, "png", outputfile);
      }

    } catch (IOException ex) {
      ex.printStackTrace();
    }
    graph.dispose();
  }





  // Metodo limpar imagem
  public void clearImage() {
    if (graph != null) {
      jPanelImagem.remove(graph);
      graph.dispose();
      dsivideo = null;
    }
    repaint();
  }


 
 
 
 
 
} // @jve:decl-index=0:visual-constraint="13,-26"
TOP

Related Classes of Presente

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.