Capturar gráficos

kermox
15 de Julio del 2003
Me gustaría saber cómo puedo capturar el dibujo hecho en un panel para después guardarlo en un fichero bmp, jpeg o similar. Sé que se puede hacer pero no sé que métodos de la clase graphics tengo que utilizar o si se utilizan otros métodos de otra clase. Espero respuesta. Gracias

Nena
15 de Julio del 2003
Has tenido suerte, yo he tenido que hacer justo eso que comentas y encontré la solución aquí:

Para salvar la imagen en un jpg o png:
http://javaalmanac.com/egs/javax.imageio/Graphic2File.html?l=find

------------------------------------

// Create an image to save
RenderedImage rendImage = myCreateImage();

// Write generated image to a file
try {
// Save as PNG
File file = new File("newimage.png");
ImageIO.write(rendImage, "png", file);

// Save as JPEG
file = new File("newimage.jpg");
ImageIO.write(rendImage, "jpg", file);
} catch (IOException e) {
}

// Returns a generated image.
public RenderedImage myCreateImage() {
int width = 100;
int height = 100;

// Create a buffered image in which to draw
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

// Create a graphics contents on the buffered image
Graphics2D g2d = bufferedImage.createGraphics();

// Draw graphics
g2d.setColor(Color.white);
g2d.fillRect(0, 0, width, height);
g2d.setColor(Color.black);
g2d.fillOval(0, 0, width, height);

// Graphics context no longer needed so dispose it
g2d.dispose();

return bufferedImage;
}

Nota: en g2d debes dibujar lo que dibujes en el panel.
Y el formato png te ocupará menos y tendrá más calidad que el jpg.

Para leer la imagen puedes mirar el siguiente ejemplo:
http://javaalmanac.com/egs/javax.imageio/BasicImageRead.html?l=rel

Espero haberte ayudado, y si tienes alguna duda escríbela e intentaré contestarte.

Un saludo, Nena