Deixe sua ajuda no que souber!

Ei galera do GUJ!
Programadores iniciantes e avançados… SOCORRO!!! rs

Vou resumir…

Desktop…aplicação simples com captura de imagem na WebCam.
PROBLEMA:
A imagem é exibida, porém se eu colocar o cursor do mouse em cima de qualquer parte da interface do programa toda e qualquer programa em (ou que use) JAVA (incluindo o NetBeans, iReports) TRAVAM!!! TODO o resto fica numa boa, TUDO!! Porém por estarem travados os mesmos não permitem que eu desligue a máquina. Desligo diretamente no botão =D. Só enfatizando, se eu ficasse 10h sem colocar o mouse sobre a interface, o programa continuaria capturando as imagens numa BOA!

Com esse código não trava:
http://forums.sun.com/thread.jspa?forumID=28&threadID=274687
Mas tb não consegui tirar o “BREU” da tela rs

“.jars em posição”.
Se eu colocar o código retirado no GUJ e o mouse sobre a interface …TRAVA!!!

    public void gravaImg (Image imagem){           
        String caminho = "C:\\Documents and Settings"
        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(50, 50, 50, 50);   
            captura.addActionListener(new java.awt.event.ActionListener() {   
                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);   
                    gravaImg(img);   
                }   
            });   
        }   
        return captura;   
    }   

Dando cabeçadas nos foruns de Java, resolvi utilizar um JFileChooser e colocar uma linda fotinha haha
Obtive o segundo problema:
Como eu faço pra colocar um campo de imagem no banco?

Terceiro problema é:
Meu programa tem uma espécie de “histórico”, em JSrollPane(JTextArea); ou seja, nesse campo sempre será inserido caracteres…dá pra colocar um campo “Ilimitado” no banco? rs Ou será que eu vou ter que limitar em 1.000 caracteres por ex?
o método setLineWrap(true) está ótimo, porém existe outro para limitar as linhas?

E o quarto problema é:

Será que vão me ajudar? rsrsr

Galera minhas desculpas e agradecimentos desde já!
Estarei apto para compartilhar conhecimentos futuros.

Forte abraço!

OBS: “No suitable Driver found” tentando conexão com SQL (utilizando jtds e .jar OK) NEM VOU PERGUNTAR kkkk

Aee… o segundo problema já está OK!

Vlw!!!

coloca isso ai para ver se funciona…

try {
         gravaImg(img);
         player.stop();
         player.close();
         }
catch (IOException ex)
{
  ex.printStackTrace();
}

Pow wellingtonsv vlw pela resposta meu velho!!

Mais ae…continua dando erro. Tem lógica sua idéia mais não de certo! Acho que ninguém vai conseguir responder essa parada, devido ao fato de ter mt iniciante. Afinal, dificil de ver alguém que MANJA com tempo pra ficar em fórum respondendo :roll:
Só os iniciantes como eu :lol:

Mais ae… todas as questões estão RESOLVIDAS. Era mera ignorância mesmo rs
A única que permaneceu foi a da WebCam.

Bom. Se daki há algum tempo, alguém quizer desenterrar esse tópico, servirá para muitos; afinal, não há
mts tutoriais a respeito de WebCam aki no GUJ, e os poucos que tem, estão com ERROS grotescos.

Um abraço galerinha!

Pow veio posta esse erro ai para eu ver…

Cara senti firmeza em vc, pelo interesse em ajudar rs

Como havia dito logo acima, quando o cursor do mouse é colocado sobre o programa, td que roda a JVM trava!!! NetBeans, Editores (crimson), Ireports e etc… e não consigo desligar o PC!
Quando testo o código do fórum da sun acima, a webcam informa uma msg dizendo que está capturando; porém como esse código tb está com um problema a imagem não aparece, fica escuro o Frame. E em contrapartida o PC NÃO trava. Somente esse código trava. Eu dei uma pesquisada (pra variar rs) e vi um código que vc postou e tentei utilizar ele tb, e deu o mesmo problema mesmo colocando os métodos nos botões de capturar e parar como vc indicou!
Velho, ta FROYD!! Só de pensar que to querendo fazer SCJP 6 em Dezembro e não consigo nem usar uma webcam no meu código da um desespero rsrs ainda bem que não precisa manjar disso pra prova!

Ae… se vc conseguir rodar um código aí que faça isso meu velho, ficarei eternamente grato!

Meu muito obrigado desde já velhão!

"

vou te mandar um codigo que eu estou trabalhando com um sistema que roda em swing

package telas;
/*
 * Foto.java
 *
 * Created on 22 de Junho de 2009, 10:27
 */

import entidades.db.ClienteDB;
import ferramentas.foto.ImageUtils;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
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.ImageIcon;
import javax.swing.JButton;
import javax.swing.JOptionPane;

/**
 *
 * @author  wvieira
 */
public class Fotografia 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;
    private ClienteDB cliDB = null;
    public int clienteID = 0;

    /** Creates new form Foto */
    public Fotografia(ClienteDB DB) {

        super();
        this.cliDB = DB;

        this.clienteID = cliDB.retornarProximoClienteID();

        initComponents();
        initialize();
        setLocation(170, 05);
        getContentPane().add(captura);
        addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent windowEvent) {
                if (player != null) {
                    player.close();
                }
                player.deallocate();
            }
        });
    }

    private void initialize() {
        this.setLayout(new BorderLayout());
        this.setSize(300, 290);
        this.setMaximumSize(new Dimension(120, 160));
        this.setMinimumSize(new Dimension(120, 160));
        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();
        }

    }

    private JButton getCaptura() {
        if (captura == null) {
            captura = new JButton("Captura e Salva");
            captura.setBounds(new Rectangle(10, 10, 10, 10));  //Corresponde a posição(x=50 e y=50) e Largura(width=50) e Altura(height=50)

            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);
                        player.stop();
                        player.close();
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    }
                }
            });
        }
        return captura;
    }

    public void gravaImg(Image imagem) throws IOException {

        String caminho = "C://photos//";
        String nmArquivo = String.valueOf(clienteID) + ".jpg";

        try {
            caminho += nmArquivo;
            ImageIO.write((RenderedImage) imagem, "jpg", new File(caminho));
            JOptionPane.showMessageDialog(this, "Imagem Capturada!");

        } catch (IOException e) {
            JOptionPane.showMessageDialog(null, "Não foi possível encontrar o dispositivo para a captura da imagem.");
            e.printStackTrace();
        }
        try {
            img = new ImageIcon(caminho).getImage();
        } catch (RuntimeException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

        try {
            ImageUtils.saveImage(ImageUtils.resizeImage(img, ImageUtils.IMAGE_JPEG, 100, 300), caminho, ImageUtils.IMAGE_JPEG);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        player.close();
        this.dispose();
    }

    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(120, 160);
            setMinimumSize(new Dimension(120, 160));
            setMaximumSize(new Dimension(120, 160));

        }

        public void setImage(Image img) {
            this.myimg = img;
            repaint();
        }

        @Override
        public void paint(Graphics g) {
            if (myimg != null) {
                g.drawImage(myimg, 0, 0, this);
            }

        }
    }

      public int returnarFotoID() {
        return clienteID;
    }
    
    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();
    }                    
    /**
     * @param args the command line arguments
     */
    /*public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
    
    @Override
    public void run() {
    new Fotografia().setVisible(true);
    }
    });
    }*/
                    
}

Veio tenta usar esse codigo é só descomentar o main para rodar , as lib do jmf tem que estar dentro do projeto.
Eu sou novato em java tenho muito que estudar ainda amigo. Mas estamos na luta ai é um ajudando o outro…

Velhão… acho que agora vai!

Mais só um detalhe, o próprio NetBeans não está reconhecendo essa class ImageUtils e dei uma googladas e encontrei diversas variações da mesma, inclusive no nome ImageUtil (sem s) por exemplo.
Ah! E não encontrei na API.
Já que vc já está com o codigo funfando belezinha, me diz ae…como faço pra importá-la?

Então… os jars estão em posição!
Um abraço meu velho!

Aee só pra confirmar… ta funfanfo belezinha??

Sobre o travar, tente rodar o código que abre a tela com a imagem dentro de uma thread…

só uma idéia…

Fernando Generoso da Rosa VLW! Mais não deu certo. A Thread executaria os métodos chamadores do Frame, não é isso?
Não deu certo meu velho!

Wellingtonsv
Velhão! Se o código está funfando contigo, eu acho que o problema é aki cara. Mais veja bem, por via das dúvidas coloquei tds os jars
da JMF e de fato eu consegui a ImageUtils mais não deu certo. TRAVOU! Com Thread e sem Thread! Minha mákina já está PEDINDO PRA SAIR de tanto eu desligá-la diretamente no botão. E eu já não tenho mais cabelos pra ARRANCAR.

Mais é isso ae… vou continuar concluindo o programa; e se alguém aí conseguir, estarei aki aguardando a resposta e sem entender o pq isso acontece, tendo em vista que só a JVM para! Posso rodar qualquer coisa, o PC funfa que é uma beleza!

Mais ae… meu agradecimentos pela grande força!

Cara, instala o JMF no sua maquina, se já estiver instalado, remove e instala a versão mais nova deste site:

http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/download.html

Cria 2 Classes com os nomes: CapturaFoto e TesteFrame

CapturaFoto:

[code]import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Panel;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.media.Buffer;
import javax.media.CaptureDeviceInfo;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.cdm.CaptureDeviceManager;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class CapturaFoto extends JPanel {

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 static final long serialVersionUID = 1L;
private JButton captura = null;


public CapturaFoto() {
	super();
	initialize();
}


private void initialize() {
	this.setLayout(new BorderLayout());
	this.setSize(327, 259);
	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){		
	String caminho = "C://000.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(50, 50, 50, 50);
		captura.addActionListener(new java.awt.event.ActionListener() {
			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);
				gravaImg(img);
			}
		});
	}
	return captura;
}

class ImagePanel extends Panel {

	private static final long serialVersionUID = 1L;
	public Image myimg = null;

	public ImagePanel() {
		JOptionPane.showMessageDialog(null, "setando a classe");
		setLayout(null);
		setSize(320, 240);
	}

	public void setImage(Image img) {
		this.myimg = img;
		repaint();
	}

	public void paint(Graphics g) {
		if (myimg != null) {
			g.drawImage(myimg, 0, 0, this);
		}
	}

}

}[/code]

TesteFrame:

[code]import java.awt.BorderLayout;
import javax.swing.JPanel;

import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;

/**

  • This code was edited or generated using CloudGarden’s Jigloo

  • SWT/Swing GUI Builder, which is free for non-commercial

  • use. If Jigloo is being used commercially (ie, by a corporation,

  • company or business for any purpose whatever) then you

  • should purchase a license for each developer using Jigloo.

  • Please visit www.cloudgarden.com for details.

  • Use of Jigloo implies acceptance of these licensing terms.

  • A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR

  • THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED

  • LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
    /
    public class TesteFrame extends javax.swing.JFrame {
    private JPanel jPanel1;
    private CapturaFoto capturaFoto1 = null;
    /
    *

    • Auto-generated main method to display this JFrame
      */
      public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
      public void run() {
      TesteFrame inst = new TesteFrame();
      inst.setLocationRelativeTo(null);
      inst.setVisible(true);
      }
      });
      }

    public TesteFrame() {
    super();
    initGUI();
    }

    private void initGUI() {
    try {
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    getContentPane().setLayout(null);
    {
    jPanel1 = new JPanel();
    BorderLayout jPanel1Layout = new BorderLayout();
    jPanel1.setLayout(jPanel1Layout);
    getContentPane().add(jPanel1);
    jPanel1.setBounds(30, 5, 327, 259);
    jPanel1.add(getCapturaFoto1(), null);
    }
    pack();
    setSize(400, 300);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    private CapturaFoto getCapturaFoto1() {
    if (capturaFoto1 == null) {
    capturaFoto1 = new CapturaFoto();
    capturaFoto1.setBounds(new java.awt.Rectangle(10, 22, 327, 259));
    }
    return capturaFoto1;
    }

}[/code]

Execulta a TesteFrame e posta o return^^

Veio eu descobri que utilizar jmf não é uma opção adequada. Jmf foi descontinuada a zilhões de anos atras. A única opção é fazer jni com directshow.
http://www.humatic.de/htools/dsj.htm