Gerar Imagem

Olá Pessoal !

To com um software que o usuário coloca elementos de tela na tela, simulando fazer um layout de programa.
Gostaria de gerar uma imagem da tela que o usuário desenvolveu, alguém sabe que método ou classe do java gera imagem ??

Ou alguém sabe algum exemplo

Valeu

Você precisa tirar uma screenshot?

Se for só pra gerar uma imagem, dá pra usar uma combinação de BufferedImage com ImageIO. Algo do tipo

ImageIO.write(getImagem(), "png", new File("C:/NovaImagem.png"));

// ...

private BufferedImage getImagem() {
    return imagemDoCliente;
}

Blz, obrigado, você acha que consigo varre um JFrame onde ter todos os elementos e gerar a imagem, ou não precisa, ele gera a imagem de tudo que tiver no Frame sem varrê-lo ?? Pois o cliente jogará todos os elementos na tela, e eu terei que gerar a imagem com tudo o que tiver nesse Painel

Como esta fazendo isto? geralmente ira usar um panel ou jpanel la tem um metodo paint(Graphics g) este metodo deve ser sobscrito e td que for feito sera desenhado nele usando a instancia de graphic com este graphic vc pode gerar a imagem de toda a area do panel, salva-la e jogar em um arquivo…

Valeu, muito show, talvez você tem algum exemplo ou algum código para eu poder ter uma idéia desse código pois nunca usei.

Valeu

http://www.java2s.com/Code/Java/2D-Graphics-GUI/ImagePanel.htm

mas invés do ImageIcon vc vai usar no seu caso um BufferedImage pois vai precisar deste para salvar e carregar a imagem com o ImageIO.
E invés de sobescrever o paintComponent neste caso vai usar o paint.

Valeu amigo, vou te alugar só mais uma vez, preciso pegar os elementos, como botão, grades, JTextFiel, etc, etc, que estaria dentro JPainel. Onde encaixaria e Jpainel no código que me sugeriu.

Valeu

Peraí vc quer é tirar um Screenshot da sua aplicação?

Nesse caso, use o método createScreenCapture da classe Robot.

Na verdade não é de toda aplicação é só da tela que o usuário projetar

É um software de prototipação de interfaces, quero gerar a imagem somente do que o cliente colocar na tela de montagem no meio, isso tudo está dentro de um JPanel

Valeu

O método que eu citei permite que vc dê as coordenadas da área onde o screenshot será dado.
Outra forma de fazer é criar um bufferedImage, e chamar o paint do painel sobre o objeto Graphics dela.

[code]BufferedImage img = new BufferedImage(800, 600, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
seuPainel.paint(g2d);
g2d.dispose();

ImageIO.write(img, “png”, new File(“suaImagem.png”));[/code]

beleza amigo, então usando o bufferedImagem, lá onde diz seuPainel eu colocaria o nome do meu painel ?? tenho que fazer algum import expecífico ??

E usando aquele do Screenshot, ficaria o código, como coloaria as coordenadas, para pegar só o que necessito.

Valeu, muito obrigado

Sim, coloca o nome do seu painel mesmo. Só precisa importar o BufferedImage e o Graphics2D, mas isso a IDE faz pra vc (são arquivos do próprio java).

SHow de bola muito obrigado !

A ultima agora se eu fosse usar createScreenCapture
como capturaria a tela como colocaria as coordenadas, para pegar só a parte da tela que necessito ??

Valeu, muito obrigado

Diogo

Você faria algo assim:

[code]Point topLeft = new Point(seuPainel.getBounds().getMinX(), seuPainel.getBounds().getMinY());
SwingUtilities.convertPointToScreen(topLeft);
BufferedImage img = new Robot().createScreenCapture(new Rectangle(topLeft, painel.getBounds().getSize()));

ImageIO.write(img, “png”, new File(“suaImagem.png”)); [/code]

PS: Uma boa lida no javadoc já teria respondido sua dúvida.