![]() |
Guardar jpg en archivo XML
Hola a todos, necesito almacenar una imágen jpg en un archivo xml.
Lo que estoy haciendo es leer en un string la información del archivo que contiene la imagen. Y luego lo asigno a un nodo del archivo xml, pero tengo el problema de que al asignar el string al Nodo, que es de Tipo OleVariant, se pierde parte de lo que asigno. Por ejemplo, el string comieza con ÿoÿä'#0#$10'JDF.... y sigue, cuando asigno, el OleVariant queda con ÿoÿä, por lo tanto al grabar el xml, sólo guarda ÿoÿä. Soy nuevo en XML, quizás este sea un problema que ya tiene solución pero no la encuentro. Estoy probando con una pequeña aplicación de prueba, en la que creo un xml, creo un nodo (con los diferentes TNodeType), asigno el string "con la imagen" y no he podido hacer que guarde todo el string el xml. Espero que me puedan dar una mano. Desde ya muchas gracias. Guillermo |
Una posibilidad es que "codifiques" el contenido del jpeg que es binario, es decir, que tendrá caracteres imprimibles y no imprimibles a un formato que contenga solamente caracteres imprimibles.
Es lo mismo que se hace cuando envias un binario por correo, puesto que los protocolos solo permiten transmitir en el cuerpo de un mensaje bytes en cierto rango (creo que >=32) y lo demás son códigos de control, etc. Para codificarlo podes valerte de las INDY, que en la pestaña Indy Misc tiene varios componentes para tal efecto (p. ej. el TidBase64Encoder). Luego, al leer nuevamente el xml, el agente que lo haga ha de decodificar el contenido nuevamente (por ejemplo con el TidBase64Decoder). Hasta luego. ;) |
Muchas gracias por tu pronta respuesta. Voy a intentar lo que me indicas.
Te cuento que hice esta prueba: Asigné, en tiempo de diseño, a un TEdit el contenido de la imagen (la cadena de caracteres), luego asigné al OleVariant el contenido de Edit1.Text y asi sí el OleVariant mantiene todos los caracteres. Lo raro es que asigné, en tiempo de ejecución, los caracteres de la imagen a un TEdit y sólo almacenó ÿoÿä, es decir, sólo una parte, lo mismo pasó con un TMemo. La verdad que no se que está pasando. Muchas gracias nuevamente. |
Aún cuando en delphi te sea posible guardar caracteres < 32 en un archivo xml, supongo que este no será válido para el 99.99% de otros sistemas que procesan xml, pues esperan archivos de texto y seguramente no estén preparados para manejar adecaudamente caracteres de control en el contenido.
Hasta luego. ;) |
Muchas gracias. Les comenté a mis jefes acerca de lo que me dijiste y, aparentemente, la especificación de los requisitos no es la correcta.
Voy a esperar a ver que me dicen y te cuento. Muchas gracias, nuevamente. |
y ¿en que van a emplear eso de guardar una imagen jpg, en un archivo
XML. ? que usos le van a dar, yo no le capto. bien. :S |
Para futura referencia:
Lo que se hace es que se guarda en una etiqueta CDATA: (preferible porque queda aparte de los datos como tal) http://www.w3schools.com/xml/xml_cdata.asp Dentro de esta, se puede escribir contenido de forma libre. Ahora bien, igual TIENES que codificar y decodificar el contenido, convirtiendo el JPG a un stream y luego a un stream de texto, mediante un Base-64 encoding (Indy lo tiene?). No tengo el dato como se hace en Delphi Win32 (lo se en .NET http://www.dotnet247.com/247referenc...57/288330.aspx) pero por aqui es el camino... Por otro lado, que tal en simplemente poner el link a la imagen, de formato URL? |
Por otro lado:
"Algunas personas, cuando se enfrentan a un problema, piensan 'Ya se!, usare XML.' Ahora ellos tienen 2 problemas." ;) -JWZ |
Cita:
Hasta luego. ;) |
Hola a todos, efectivamente, la especificación era incorrecta.
Después de investigar por nuestra cuenta, unos de mis jefes se dio cuenta, por un ejemplo que tenemos, que se estaba codificando usando una codificación similar a la que hace le método HttpEncode. La diferencia está en que para algunos caracteres no se hace la codificación Asi que lo que hicimos fue implementar nuestro HttpEncode y ahora se puede almacenar la imagen en el XML. Con respecto a una pregunta anterior, la verdad no tengo idea de por que se necesita la imagen dentro del XML, yo, en la empresa, sólo soy un simple programador y hago lo que "especifican". Muchas gracias a todos. |
YO creo que si seria util conocer para que proposito, es eso de poner
una imagen jp, o cualquier imagen en un xml. A lo mejor, y el metodo, no es el menos engoroso, y más útil, y conociendo para que se puede probar si hay otras formas más optimas. oye de favor zemog76 , preguntas, que estoy intrigado. Gracias |
Cita:
Hasta luego. ;) |
Hola, se necesita la imagen en el xml porque este xml se le envía a otra institución, y ésta es la que realizó la especificación, y se ve que les resulta util esta manera, imagino que es porque quieren tener toda la información en un solo archivo.
|
Vale graciaas. ahora a pensar, en que lo puedo usar , yo. ?;:S:S
|
La franja horaria es GMT +2. Ahora son las 18:27:37. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi