Foros del Web » Programación para mayores de 30 ;) » Java »

Convertir un Canvas en Imagen

Estas en el tema de Convertir un Canvas en Imagen en el foro de Java en Foros del Web. Buenas, a todos, esoty tratando de realizar una aplicacion que de un dibujo realizado en un Canvas me permita guardarlo como imagen, he visto en ...
  #1 (permalink)  
Antiguo 15/05/2012, 14:06
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 3 meses
Puntos: 43
Convertir un Canvas en Imagen

Buenas, a todos, esoty tratando de realizar una aplicacion que de un dibujo realizado en un Canvas me permita guardarlo como imagen, he visto en internet varias soluciones, he logrado que se me cree la imagen pero, siempre me lo pone con color negro de fondo, he tratado de decirle lienzo.setBackground(Color.white); y nada, lo muestro el lienzo en un panel, de esta forma pane.add(lienzo), y sale bien con el color bien y los dibujos igual

estoy utilizando esta funcion

private BufferedImage canvasToImage(Canvas cnvs) {
int w = cnvs.getWidth();
int h = cnvs.getHeight();
int type = BufferedImage.TYPE_INT_BGR;
BufferedImage image = new BufferedImage(w,h,type);
Graphics2D g2 = image.createGraphics();
cnvs.paint(g2);
g2.dispose();
return image;
}

disculpen que no lo ponga dentro de etiquetas de codigo, porque no tengo habilitado el javascript,

si alguien me pudiera echar una mano con esto,

saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #2 (permalink)  
Antiguo 16/05/2012, 09:26
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 3 meses
Puntos: 43
Respuesta: Convertir un Canvas en Imagen

Buenas, ya pude solucionar mi situación,

Explico, yo tengo una clase llamada lienzo que extiende de Canvas, donde en ella realizo dibujos, rectangulos, circulos, lineas, texto, o tras cosas mas, el problema que tenia era que al pasarle un objeto creado de esta clase lienzo, a la funcion que anteriormente puesta, me convertia esto en una imagen, y mediante otras procedimientos se creaba un archivo imagen.png,

File file = new File("d:\\imagen.png");
try {
ImageIO.write(canvasToImage(lienzo), "png", file);
} catch (IOException ex) {
Logger.getLogger(DesingCut.class.getName()).log(Le vel.SEVERE, null, ex);
}

, el creaba el archivo imagen muy bien, pero todo era con fondo en negro,

Solucion a la situación:

pintar un rectangulo relleno con el color de fondo deseado, en mi caso blanco, del tamaño completo del lienzo, esto va en el metodo de la clase Linezo

@Override
public void paint(Graphics g)
{
((Graphics2D)g).setColor(Color.white);
((Graphics2D)g).fillRect(0, 0,getWidth(), getHeight());
/** Aqui realizo los otros dibujos */
}

despues en otro lugar:


File file = new File("d:\\imagen.png");
try {
ImageIO.write(canvasToImage(lienzo), "png", file);
} catch (IOException ex) {
Logger.getLogger(DesingCut.class.getName()).log(Le vel.SEVERE, null, ex);
}

y se obtuve el resultado esperado
saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..

Etiquetas: canvas, imagenes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:08.