Oi pessoal!, eu fiz um paint em java usando a API java2D, e eu queria salvar o desenho feito.
Alguém sabe como salvar?
eu já pesquisei na web e não achei nada.
Oi pessoal!, eu fiz um paint em java usando a API java2D, e eu queria salvar o desenho feito.
Alguém sabe como salvar?
eu já pesquisei na web e não achei nada.
cara já viu o IO
não me lembro muito bem dele mas ele é bom para entrada e saída (essa é sua função)
http://docs.oracle.com/javase/1.4.2/docs/api/javax/imageio/ImageIO.html#write(java.awt.image.RenderedImage, java.lang.String, java.io.File)
ImageIO.write(suaBufferedImage, "png", new File("/files/img.png"));
Eu já conhecia o ImageIO, mas para esse caso ele não dar certo (Pelo menos nos meus conhecimentos),
O desenho é feito em um JPanel através da classe Graphics, e lá eu não tenho um BufferedImage,
Eu já tentei ver se é possível extrair um BufferedImage da classe Graphics, mas pelo que eu vi ela não tem o Objeto BufferedImage,
por isso a dificuldade!
Não desenhe diretamente num painel. Desenhe num BufferedImage (que tem o método createGraphics()) e use o painel para desenhar essa imagem. Caso contrário, o desenho desaparecerá assim que você minimizar e maximizar a aplicação.
Em todo caso, é possível copiar o conteúdo de um painel para um BufferedImage.
[code]
BufferedImage img = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB); //Troque o 800 e 600 pelo tamanho do seu painel
Graphics2D g2d = img.createGraphics();
seuPainel.drawImage(img, 0, 0, null);
g2d.dispose();
//Agora salve a imagem como o Mark indicou.[/code]
Embora o aconselhável seja fazer o inverso, como indiquei no primeiro parágrafo.
Deu certo desenhar sobre o BufferedImage, resolveu meu problema.
So que não ficou com a mesma qualidade que desenhar sobre o JPanel.
Outro problema 'e que quando desenha uma forma sobre a outra, ela não sobrescreve a anterior,
fazendo uma mistura de cores, mantando o desenho.
Alguma sugestão?
Não deveria fazer blending.
Me diz uma coisa, vc mudou seu código para desenhar na imagem e depois aplicar o resultado no JPanel? Ou usou o código que eu fiz para copiar o painel para a imagem?
Para definir a qualidade de um objeto Graphics, use o método setRenderingHints. Talvez só falte definir isso para o seu objeto desenhar com qualidade.
da para postar pelo menos o jar do seu paint aí.]valeu.
Eu desenhei primeiro na imagem e depois apliquei no painel. Foi a sua primeira sugestão.
Deu certo o setRenderingHints.
Tai o código fonte… O código tá meio desorganizado porque eu tirei do meu projeto original. (Projeto do Netbeans :D)