Insertar imagen en una tabla droidText.0.4 con la ruta del archivo en sqlite

250 views
Skip to first unread message

jrobayna

unread,
Feb 15, 2014, 7:42:51 AM2/15/14
to desarrollad...@googlegroups.com


Buenos días y vaya por delante mi agradecimiento por la ayuda que prestáis.

Tengo el siguiente problema para el que pido ayuda a quien me pueda ayudar.

Utilizo la librería droidText.0.4

Intento incrustar una imagen en una celda. El nombre del archivo lo recojo desde un campo TEXT de una tabla
de sqlite3 y lo combino con una variable col el path del directorio.

El código que adjunto está en un archivo de clase que genera el PDF

Este código me da error:

public static String GBL_RUTA_FOTOS = String.valueOf(android.os.Environment.getExternalStorageDirectory()
            + File.separator + "dirFotos" + File.separator);
  PdfPCell pdfcell;
  String foto = "";

            if (c.moveToFirst()) {

                do {
//                    codigo
                    pdfcell = new PdfPCell(
                            new Phrase(c.getString(1).toString()));
                    pdfcell.setColspan(1);
                    tabla.addCell(pdfcell);

//                    nombre 
                    pdfcell = new PdfPCell(
                            new Phrase(c.getString(2).toString()));
                    pdfcell.setColspan(1);
                    tabla.addCell(pdfcell);

//                    apellidos
                    pdfcell = new PdfPCell(
                            new Phrase(c.getString(3).toString()));
                    pdfcell.setColspan(1);
                    tabla.addCell(pdfcell);

// alias
                    pdfcell = new PdfPCell(
                            new Phrase(c.getString(4).toString()));
                    pdfcell.setColspan(1);
                    tabla.addCell(pdfcell);

                    //email
                    pdfcell = new PdfPCell(
                            new Phrase(c.getString(5).toString()));
                    pdfcell.setColspan(1);
                    tabla.addCell(pdfcell);

                    //foto
                    
AQUI EL ERROR
foto = c.getString(6);  
pero si pongo la ruta absoluta del archivo "mnt/sdcard/dirFotos/mifoto.png"
funciona correctamente

                    Image imag = Image.getInstance(VariablesGlobales.GBL_RUTA_FOTOS + foto);
                    tabla.addCell(imag);
.......
} while (c.moveToNext());
            }
He cambiado con diferentes  técnicas para leer el archivo desde la tabla pero siempre me genera error.
Me pueden echar una mano.
Muchas gracias..


Juan de Dios Maldonado Sánchez

unread,
Feb 15, 2014, 8:40:21 AM2/15/14
to desarrollad...@googlegroups.com
No cuesta mucho sacar por Log el contenido final de GBL_RUTA_FOTOS. Así sabrás qué ruta está generando y cómo hacerla de forma correcta.


--
Para participar es necesario que leas detenidamente las normas del grupo: http://goo.gl/8h8ez2
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/desarrolladores-android.
Para ver este debate en la Web, visita https://groups.google.com/d/msgid/desarrolladores-android/10a492a5-aa51-4a59-ba29-9f539ae79890%40googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

jrobayna

unread,
Feb 16, 2014, 2:14:32 AM2/16/14
to desarrollad...@googlegroups.com
Gracias juande por responder.
Efectivamente, aunque no aparece en el código que he puesto, ya lo había probado con Log, y el valor de la variable da la salida de la ruta completa, VariablesGlobales.GBL_RUTA_FOTOS + foto ES CORRECTA, apunta al archivo así: /mnt/sdcard/dirFotos/mifoto.png
Decirte que el valor que guardo en el campo TEXT de la tabla de sqlite es sólo el nombre del archivo "mifoto.png"
He probado con otras tablas por si esta está dañada y pasa igual.

También he probado diferentes formas de insertar la imagen en la tabla, por ej.
    File file1 = new File(foto);

       Bitmap bitmapOrig = BitmapFactory.decodeFile(foto);
       bitmapOrig.compress(Bitmap.CompressFormat.PNG, 100, stream);
       Image  imagen = Image.getInstance(stream.toByteArray());
       tabla.addCell(imagen);


No tengo ni idea donde puede estar el fallo...

Gracias de nuevo juande.

Juan de Dios Maldonado Sánchez

unread,
Feb 16, 2014, 3:20:18 AM2/16/14
to desarrollad...@googlegroups.com
Pues depura la línea de código que carga la imagen en base a la ruta (pon un punto de ruptura justo ahí), y observa el contenido de la ruta justo en el momento de cargar la imagen. Si "te da error", significa que no se genera exactamente igual que cuando la pones a mano.

Además... "me genera error" no es algo muy específico que digamos. El error puede ser:

- Que el elemento no tenga la forma correcta
- Que la URL no sea correcta
- Que no exista el archivo
- Que la ruta no sea correcta
- Que no tengas permisos para acceder al archivo


Cuando "te de error", mírate bien qué excepción de las tres de arriba te aparece, y actúa en consecuencia.



--
Para participar es necesario que leas detenidamente las normas del grupo: http://goo.gl/8h8ez2
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/desarrolladores-android.

jrobayna

unread,
Feb 16, 2014, 5:45:06 AM2/16/14
to desarrollad...@googlegroups.com
Gracias de nuevo.
Pruebo con lo que sugieres y te comento.


El sábado, 15 de febrero de 2014 12:42:51 UTC, jrobayna escribió:

jrobayna

unread,
Feb 17, 2014, 12:46:38 PM2/17/14
to desarrollad...@googlegroups.com
Hola de nuevo juande. Siento mucho el latazo que te estoy dando.
He depurado como sugerías y las salidas que da son correctas:
imag = Rectangle: 252.0x438.0 (rot: 0 degrees)
url: file:/mnt/sdcard/chlFotos/juanca_juvenil_a.png

Pero ahora genera el pdf con error "El documento no se puede abrir porque está dañado".
Me tiene loco esto. He hecho esto mismo con otras aplicaciones y no me da estos errores


El sábado, 15 de febrero de 2014 12:42:51 UTC, jrobayna escribió:

Juan de Dios Maldonado Sánchez

unread,
Feb 17, 2014, 1:55:40 PM2/17/14
to desarrollad...@googlegroups.com
Si la excepción que salta en la línea "Image.getInstance" no puedo ayudarte.


--
Para participar es necesario que leas detenidamente las normas del grupo: http://goo.gl/8h8ez2
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/desarrolladores-android.

jrobayna

unread,
Feb 18, 2014, 5:12:52 AM2/18/14
to desarrollad...@googlegroups.com
Efectivamente el error se está originando en esa línea, pero sólo para extensiones de archivo .jpg, no para .png, estoy probando y buscando para ver que puedo sacar en claro de esto.
Gracias por tu ayuda juande...


El sábado, 15 de febrero de 2014 12:42:51 UTC, jrobayna escribió:
Reply all
Reply to author
Forward
0 new messages