Imagem de camera com JMF

0 respostas
manhanijava

Galera consigo capturar a imagem da webcam tranquilamente no código que postarei a seguir..só que não to conseguindo mudar o tamanho da figura;....ex.: só ta capturando 640x480..será que algéum aqui com mais experiencia consegue olhar no código e me ajudar a capturar uma imagem menor

import java.awt.BorderLayout;   
import java.awt.Component;   
import java.awt.Graphics;   
import java.awt.Image;   
import java.awt.image.RenderedImage;   
import java.io.File;   
import java.io.IOException;   
import java.util.logging.Level;   
import java.util.logging.Logger;   
import javax.imageio.ImageIO;   
import javax.media.Buffer;   
import javax.media.CaptureDeviceInfo;   
import javax.media.CaptureDeviceManager;   
import javax.media.Manager;   
import javax.media.MediaLocator;   
import javax.media.Player;   
import javax.media.control.FrameGrabbingControl;   
import javax.media.format.VideoFormat;   
import javax.media.util.BufferToImage;   
import javax.swing.JButton;   
import javax.swing.JOptionPane;   
  
public class CapturaFoto extends javax.swing.JFrame {   
    private static final long serialVersionUID = 1L;   
    public static Player player = null;   
    public CaptureDeviceInfo di = null;  //  @jve:decl-index=0:   
    public MediaLocator ml = null;  //  @jve:decl-index=0:   
    public JButton capture = null;   
    public Buffer buf = null;   
    public Image img = null;   
    public VideoFormat vf = null;   
    public BufferToImage btoi = null;   
    public ImagePanel imgpanel = null;   
    private JButton captura = null;   
  
  
    public CapturaFoto() {   
        super();   
        initComponents();   
        initialize();   
        this.setSize(600,580);   
        setLocation(170, 05);   
    }   
    private void initialize() {   
        this.setLayout(new BorderLayout());   
        this.setSize(600,500);   
        this.add(getCaptura(), BorderLayout.SOUTH);   
        this.setVisible(true);   
        String str2 = "vfw:\\0";   
        di = CaptureDeviceManager.getDevice(str2);   
        ml =  new MediaLocator("vfw:\\0");   
        try {   
            player = Manager.createRealizedPlayer(ml);   
            player.start();   
            Component comp;   
            if ((comp = player.getVisualComponent()) != null) {   
                add(comp, BorderLayout.NORTH);   
            }   
            add(captura, BorderLayout.SOUTH);   
            } catch (Exception e) {   
            e.printStackTrace();   
        }   
  
    }   
  
    public void gravaImg (Image imagem) throws IOException{   
        String caminho = "C:/photos"+"00"+".JPG";   
    try {   
            ImageIO.write((RenderedImage) imagem, "jpg", new File(caminho));   
            JOptionPane.showMessageDialog(this, "Imagem Capturada!");   
        } catch (IOException e) {   
            JOptionPane.showMessageDialog(null, "não foi possivel encontrar " + "o dispositivo para a captura da imagem.");   
            e.printStackTrace();   
        }   
    }   
    private JButton getCaptura() {   
        if (captura == null) {   
            captura = new JButton("Captura");   
            captura.setBounds(10, 10, 600, 500);   
            captura.addActionListener(new java.awt.event.ActionListener() {   
                @Override  
                public void actionPerformed(java.awt.event.ActionEvent e) {   
                    FrameGrabbingControl fgc = (FrameGrabbingControl) player   
                            .getControl("javax.media.control.FrameGrabbingControl");   
                    buf = fgc.grabFrame();   
                    btoi = new BufferToImage((VideoFormat) buf.getFormat());   
                    img = btoi.createImage(buf);   
                    try {   
                        gravaImg(img);   
                    } catch (IOException ex) {   
                        Logger.getLogger(CapturaFoto.class.getName()).log(Level.SEVERE, null, ex);   
                    }   
                }   
            });   
        }   
        return captura;   
    }   
  
    class ImagePanel extends javax.swing.JPanel {   
  
        private static final long serialVersionUID = 1L;   
        public Image myimg = null;   
  
        public ImagePanel() {   
            JOptionPane.showMessageDialog(null, "setando a classe");   
            setLayout(null);   
            setSize(200,200);   
        }   
  
        public void setImage(Image img) {   
            this.myimg = img;   
            repaint();   
        }   
  
        @Override  
        public void paint(Graphics g) {   
            if (myimg != null) {   
                g.drawImage(myimg, 0, 0, this);   
            }   
        }   
    }   
private void initComponents() {   
  
        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);   
        setTitle("Capturar Foto");   
  
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());   
        getContentPane().setLayout(layout);   
        layout.setHorizontalGroup(   
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)   
            .addGap(0, 607, Short.MAX_VALUE)   
        );   
        layout.setVerticalGroup(   
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)   
            .addGap(0, 489, Short.MAX_VALUE)   
        );   
  
        pack();   
    }   
  
  
    public static void main(String args[]) {   
        java.awt.EventQueue.invokeLater(new Runnable() {   
            @Override  
            public void run() {   
                new CapturaFoto().setVisible(true);   
            }   
        });   
    }   
}
Criado 13 de fevereiro de 2013
Respostas 0
Participantes 1