Salvando um JPanel como imagem  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
Luiz Ot?io S. F. Campos
HelloWorld
[Avatar]

Membro desde: 15/10/2009 11:32:09
Mensagens: 11
Offline

Olá galera!!!

Estou com o seguinte problema:

Tenho um extends JPanel que foi pintando com o paintComponent (override).
Queria salvar a imagem que fiz neste painel em um arquivo jpeg.

Bem, a dúvida é essa: Como e onde faço isso???
Se tiverem algum exemplo, melhor ainda...


Obrigado!!
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline

1. Crie uma BufferedImage, coma as dimensões do painel:


2. Obtenha o contexto gráfico dessa imagem:


3. Faça o painel desenhar sobre essa imagem:


4. Apague o contexto gráfico (isso não apagará a imagem):


5. Salve a imagem no disco:

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Luiz Ot?io S. F. Campos
HelloWorld
[Avatar]

Membro desde: 15/10/2009 11:32:09
Mensagens: 11
Offline


Muito obrigado ViniGodoy, mas não deu certo.

Vou mandar o código:




Essa classe pinta o alguns desenhos no painel





Sai apenas uma imagem meio laranja na imagem de saída.
Se alguém puder me ajudar, agradeço!!!
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline

Você pode tentar fazer o seguinte:

a) Chamar o método paint, ao invés do paintComponent:

b) Se ainda não der certo, separar a parte de pintura, para poder chama-la separadamente:

This message was edited 1 time. Last update was at 12/11/2009 08:55:04


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Luiz Ot?io S. F. Campos
HelloWorld
[Avatar]

Membro desde: 15/10/2009 11:32:09
Mensagens: 11
Offline

Resolvido o problema!!!!

Mundando para RGB



E adicionando isso:



Ahhh.... e claro, usem:



Ao invés de (substitua todos):




Só um problema, a imagem não fica com boa qualidade... se alguém souber de alguma forma de melhorar isso, poste aqui, ok?!

Valeww ViniGodoy!!!!!

This message was edited 1 time. Last update was at 12/11/2009 21:05:24

ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline

Pode postar um screenshot do painel e da imagem para eu ver a diferença? Talvez seja só uma questão de ajustar os rendering hints.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Luiz Ot?io S. F. Campos
HelloWorld
[Avatar]

Membro desde: 15/10/2009 11:32:09
Mensagens: 11
Offline

A da esquerda foi com print screen, a da direita foi salva conforme o código postado anteriormente:

This message was edited 1 time. Last update was at 18/11/2009 23:08:13

ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline

Tente outro formato, como png. A impressão que dá é que o Java está usando um grau de compactação muito alto no JPEG.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline

Veja se isso aqui te resolve também:
http://www.universalwebservices.net/web-programming-resources/java/adjust-jpeg-image-compression-quality-when-saving-images-in-java

Ele explica como eliminar a compressão do jpeg.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team