Salvar imagem que foi carregada no JLabel

14 respostas
levimendes

Olá pessoal, alguém sabe me dizer por favor se é possível eu salvar uma imagem que foi carregada em um JLabel?
:?: :?: :?: :frowning:

14 Respostas

ViniGodoy

Sim, é possível.

levimendes

E aí colega, blz?

Então vc pode me dar esse help?

ViniGodoy

Uma das maneiras poderia ser:

BufferedImage img = new BufferedImage(label.getWidth(), label.getHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = img.createGraphics(); label.paintComponent(g2d); g2d.dispose(); ImageIO.write(img, "png", new File("C:/imagem.png"));

Dependendo de como você carrega a imagem no label, pode ter maneiras mais fáceis.

Marky.Vasconcelos

Se voce pegou a instancia de BufferedImage para colocar no JLabel voce pode usar o ImageIO.write direto com esse objeto para salvar a imagem.

levimendes

e aí ViniGodoy, blz?
pelo que eu pude perceber o método paintComponent() foi reescrito, estou certo disso?
se estou como eu devo reescreve-lo?

Marky.Vasconcelos

Voce não precisa sobreescrever o paintComponent ele já é escrito na classe Component e o JLabel herda dele.

Esse método é usado para pintar o component na instancia de Graphics que é passada. O Swing manda o Graphics da tela para pintar na tela, se voce passa um Graphics pra ele ele pinta nessa instancia e voce pode salva-lo como imagem.

ViniGodoy

É o que o Mark disse. Não foi reescrito, só foi usado. Isso fará com que o Label “se desenhe” em algum local, no caso, um BufferedImage.
A vantagem dessa abordagem é que você também terá impresso o texto da label, caso exista algum.

M

Foi isso que foi dito. Caso você queira só imagem mesmo, você também pode fazer assim:

ImageIO.write((RenderedImage) ((ImageIcon) label.getIcon()).getImage(), "png", new File("imagem.png"));
levimendes

Beleza pessoal, consegui salvar a imagem, só que agora tem outro problema, estou usando a classe JFileCohooser para selecionar a imagem, e gostaria de saber como que eu faço para passar como parametro o local que eu desejo salvar a imagem e o nome que eu quizer dar para a imagem… :?:

M

Você usa o mesmo método acima, mas ao invés de colocar “new File()” você usa o método getSelectedFile() de JFileChooser para saber em qual arquivo salvar.

levimendes

blz pessoal, até agora já consegui implementar todas essas idéias, porém quando eu salvo a imagem e a abro diretamente, ela fica com uma cor estranha, meio que avermelhada :?: :?: :?:…
mais uma coisa, porque que nesta linha “ImageIO.write(bi, “jpg”, dialogoSalvar.getSelectedFile());” o segundo argumento recebe “jpg”, sendo que o programa permite que eu salve a imagem com qualquer extenção…
:?: :?: :?: :?: :?: :?: :frowning: :frowning:

Marky.Vasconcelos

Voce pode mudar para o que voce quiser.
png, bmp, png e gif.

Só faça sua lógica indicar o formata certo que voce deseja.

M

levimendes:
blz pessoal, até agora já consegui implementar todas essas idéias, porém quando eu salvo a imagem e a abro diretamente, ela fica com uma cor estranha, meio que avermelhada :?: :?: :?:…
mais uma coisa, porque que nesta linha “ImageIO.write(bi, “jpg”, dialogoSalvar.getSelectedFile());” o segundo argumento recebe “jpg”, sendo que o programa permite que eu salve a imagem com qualquer extenção…
:?: :?: :?: :?: :?: :?: :frowning: :(

Quanto à extensão, o Mark_Ameba já respondeu. Agora, você poderia postar um exemplo da imagem que fica estranha?

seudito

Olá pessoal,

Acredito que estou com um problema semelhante ao do colega acima… quando salvo a imagem em formato jpg, ela fica com um tom avermelhado (em formato png fica perfeito, mas é que preciso em formato jpg). Alguem tem alguma idéia do que possa estar ocorrendo?

Informações adicionais: estou utilizando o método do link abaixo para unir duas imagens e então salvar a união. Ao salvar esta união é que o problema ocorre.
http://www.guj.com.br/posts/list/0/139318.java#990029

Criado 1 de dezembro de 2009
Ultima resposta 4 de fev. de 2010
Respostas 14
Participantes 5