Capturar gráficos
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
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
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
