Java - Guardar imagen JFrame

 
Vista:

Guardar imagen JFrame

Publicado por clip (5 intervenciones) el 17/04/2007 01:36:03
Hola,
He hecho una clase que hereda de JFrame, en la cual se han dibujado varios objetos, líneas, puntos, etc... (mediante los métodos g.drawLine(),....).
Me gustaría saber de qué forma puedo guardar la imagen creada en el fondo del JFrame en un archivo de imagen (ya sea jpg, png, cualquiera valdría).
Gracias.
Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Guardar imagen JFrame

Publicado por galeginho (34 intervenciones) el 17/04/2007 13:23:31
public BufferedImage getImage (Color bg, int inset) {
Dimension d = getPreferredSize();
Rectangle2D bounds;
if (d != null) {
bounds = new Rectangle2D.Double(0, 0, d.getWidth(), d.getHeight());
} else {
Object[] cells = getRoots();
bounds = getCellBounds(cells);
}
if (bounds != null) {
toScreen(bounds);
BufferedImage img = new BufferedImage((int) bounds.getWidth(),
(int) bounds.getHeight(),
(bg != null) ? BufferedImage.TYPE_INT_RGB
: BufferedImage.TYPE_INT_ARGB);
Graphics2D graphics = img.createGraphics();
if (bg != null) {
graphics.setColor(bg);
graphics.fillRect(0, 0, img.getWidth(), img.getHeight());
} else {
graphics.setComposite(AlphaComposite.getInstance(
AlphaComposite.CLEAR, 0.0f));
graphics.fillRect(0, 0, img.getWidth(), img.getHeight());
graphics.setComposite(AlphaComposite.SrcOver);
}
print(graphics);
graphics.dispose();
return img;
}
return null;
}

la imagen que devuelve la puedes salvar en un fichero con:

ImageIO.write(ima, extensionQueQuieras, new File(nombreFichero);


saludos y suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Guardar imagen JFrame

Publicado por clip (5 intervenciones) el 17/04/2007 16:32:00
Gracias por contestar.
Cuando llamo a la función public BufferedImage getImage (Color bg, int inset), ¿qué es el entero que se le pasa? Esto me va a devolver un BufferedImage, pero si luego lo quiero guardar en un fichero hay que hacer uso de lo siguiente:
ImageIO.write(ima, extensionQueQuieras, new File(nombreFichero), aquí mi duda es que ¿la varialbe ima debe ser la que devuelva el método getImage, es decir un BufferedImage?
He visto algunos ejemplos en la página de java.sun.com y he intendado copiarlos en mi código me crea el archivo con las dimensiones correctas pero se dibuja sólo un fondo, sin ningún objeto.
Así que nada, seguiré programando.
De nuevo gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Guardar imagen JFrame

Publicado por galeginho (34 intervenciones) el 18/04/2007 11:35:38
ummm...

aver yo este codigo lo encontre por internet y supuestamente guarda todo el frame en una imagen pero aun no me ha dado tiempo de probarlo..espero poder hcerlo mañana

en cuanto a la variable ima deberia ser img,....jeje. y si,deberia ser la devuelta por getImage. En cuanto al int que se le pasa pos no se que podra ser pero vamos que no se usa en ningun lado asiq....

yo ahora mismo lo que tengo es un metodo que en vez de guardar todo el frame guarda solo la parte que se ve, es decir, guarda un pantallazo del frame, y lo tengo que cambiar por este nuevo en caunto pueda.

si quieres te mando el codigo del mio por mail que funciona seguro para ir tirando mientras tanto aver si conseguimos que funcione esta nueva forma entre los 2..

saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Guardar imagen JFrame

Publicado por clip (5 intervenciones) el 18/04/2007 13:20:09
Por mi perfecto, te voy a dejar una web donde yo encontré algo:

http://forum.java.sun.com/thread.jspa?threadID=580960, mira si te puede ayudar en algo.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar