Java - Guardar imagen en txt

   
Vista:

Guardar imagen en txt

Publicado por Juan (10 intervenciones) el 15/03/2017 05:36:38
Buen dia

Tengo un programa que dibuja rectángulos, óvalos, y triangulos en jPanel,
alguien sabe como guardar lo que se dibujo en el JPanel en un archivo txt, y de
igual manera abrirlo el archivo desde la aplicación y aparezcan las figuras.


Antes tenia estos métodos para abrir y guardar archivos de txt, todo se imprimía en un txtArea,
pero aquí solo me permitía escribir y no permitía dibujar, y de ahí empece a utilizar el jPanel para dibujar. :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if(seleccionado.showDialog(null, "GUARDAR TEXTO") == JFileChooser.APPROVE_OPTION){
    archivo = seleccionado.getSelectedFile();
   // if(archivo.getName().endsWith("txt")){
        if(archivo.getName().endsWith("txt")|archivo.getName().endsWith("jpg")||archivo.getName().endsWith("png")||archivo.getName().endsWith("gif")){
 
        String contenido = txtAreaTexto.getText();
 
        String respuesta = gestion.GuardarATexto(archivo, contenido);
        if(respuesta!=null){
            JOptionPane.showMessageDialog(null, respuesta);
        }else{
            JOptionPane.showMessageDialog(null, "Error al guardar texto.");
        }
    }else{
        JOptionPane.showMessageDialog(null, "El texto se debe guardar en un formato de texto.");
    }
}


1
2
3
4
5
6
7
8
9
10
11
12
if (seleccionado.showDialog(null, "ABRIR ARCHIVO") == JFileChooser.APPROVE_OPTION) {
    archivo = seleccionado.getSelectedFile();
    if (archivo.canRead()) {
        if (archivo.getName().endsWith("txt")) {
            String contenido = gestion.AbrirATexto(archivo);
            txtAreaTexto.setText(contenido);
 
        } else {
            JOptionPane.showMessageDialog(null, "Por favor seleccione un archivo de texto ");
        }
    }
}



Saludos.
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

Guardar imagen en txt

Publicado por YYanes (140 intervenciones) el 15/03/2017 20:36:35
Hola amigo:

publique usted un segmento del código que utiliza para dibujar las figuras en el JPanel para hacer mejores sugerencias, aunque de momento lo que le sugiero es que trate de crear su propio codificador, por ejemplo: un caracter en clave para identificar la figura que quiere dibujar, seguido por las coordenadas pasadas a la función que dibuja finalmente la figura; y por supuesto, tiene que dise;ar un algoritmo que interprete esta codificación y la traduzca en dibujos (o instrucciones de dibujar) en el JPanel

Un GigaSaludo!!!
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

Guardar imagen en txt

Publicado por Juan (10 intervenciones) el 16/03/2017 01:36:21
Buen dia

asi es como pinto en el jPanel:
Graphics g = this.Jpanel1.getGraphics();
g.drawRect(150, 70, 50, 70);

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

Guardar imagen en txt

Publicado por YYanes (140 intervenciones) el 22/03/2017 13:35:35
Bueno, en un TXT no podrá guardar la imagen como tal, pero sí puede guardar los datos para reconstruirla, por ejemplo:

R=150,70,50,70; //-- Esta línea en un TXT podría representar una instrucción para un drawRect, y los números serían los parámentros para dicha función.

Lo único que tendría que hacer es buscar la forma de escribir todas las figuras en un mismo TXT, y diseñar un algoritmo que las separe y las interprete para poder dibujarlas. Una función que te podría ser útil para eso es "split(subcadena)", la cual corta un String en varios segmentos tomanto como separador el parámetro "subcadena", y los segmentos los pone en un arreglo de String, por ejemplo:

1
2
3
4
5
6
7
String myStr = "a,b,c,d,e,f,g";
 
String toks[] = myStr .split(","); //-- corta el String myStr en segmentos utilizando como separador el caracter coma "," y guarda el resultado en el arreglo "toks[]"
 
Strint varAbc = "";
varAbc = toks[0]; //--- varAbc toma valor "a"
varAbc = toks[2]; //--- varAbc toma valor "c"

Podrías emplear un Split para cortar el contenido del TXT en segmentos utilizando el punto y coma ";" como separador, y cada segmento representar'ia una figura; luego un segundo Split() utilizando como separador el operador de igualdad "=" para obtener la figura a dibujar (parte izquierda) y la lista de parámetros (parte derecha); y finalmente un tercer Split() que corte según las comas de la parte derecha, para obtener la lista de parámetros.
Esto es solo una idea, creo que variantes podrías adoptar muchas. Lo que tendrías que tener en cuenta que para poder guardar los datos en tu TXT tendrías que irlos guardando al mismo tiempo en el que mandas a dibujar, pues de lo contrario te sería muy difícil traducir tu dibujo en código que puedas guardar en tu TXT.

Bueno, en fin, lo que yo haría sería eso, crear mi propia "codificación" de los dibujos en el TXT. Espero que encuentre una buena solución.

Un GigaSaludo!!!
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