Olá pessoal, alguém sabe me dizer por favor se é possível eu salvar uma imagem que foi carregada em um JLabel?
:?: :?: :?: 
Salvar imagem que foi carregada no JLabel
14 Respostas
Sim, é possível.
E aí colega, blz?
Então vc pode me dar esse help?
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.
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.
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?
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.
É 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.
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"));
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… :?:
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.
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…
:?: :?: :?: :?: :?: :?:

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.
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…
:?: :?: :?: :?: :?: :?::(
Quanto à extensão, o Mark_Ameba já respondeu. Agora, você poderia postar um exemplo da imagem que fica estranha?
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
