FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Cargar una Imagen base64 en un Timage
Saludos amigos, estoy realizando una consulta al Web Service que se muestra en la siguiente imagen: https://ibb.co/2t1Bch7
En particular me interesa poner mostrar el campo foto en un componente TImage. Estoy intentando leerlo pero no se como tratar el tipo de llegada, obsérvese la imagen del error: https://ibb.co/r0QgmqZ Agradezco cualquier ayuda en este sentido Abrazo Américo Torres |
#2
|
|||
|
|||
dato adicional
Cita:
|
#3
|
||||
|
||||
Hola.
Creo que el problema te lo da la asignación de la foto. En el Web Service viene definida como Base64, efectivamente: <xs:element minOccurs="0" name="_foto" nillable="true" type="xs:base64Binary"/> Por otro lado, estás asignando al Stream un array de bytes, y ese es el error que te devuelve Delphi: [dcc32 Error] uMain.pas(73): E2010 Incompatible types: 'TStream' and 'System.TArray<System.Byte>' Una posible solución es usar Indy para transformar el base 64 a Stream como se ve en este ejemplo; Ahí lo que hacen es cargar el base64 en un TStringStream y luego cargarlo en la imagen de esta forma: Espero que te sirva. Un saludo |
#4
|
|||
|
|||
gracias x responder
Cita:
Amigo, Interesante sin duda el ejemplo que has citado, sin embargo ahi asumen que la imagen ya esta colocada en un componente TImage y realizan la conversion a base64 con una linea como esta:
En mi caso requiero tomar la cadena base64 del web service y cargarla a un Stream para luego cargarla en el componente TImage, (el formato del base64 es Jpg por cierto) con una linea similar a esta:
Hmmmm ando liado Un abrazo |
#5
|
||||
|
||||
Hola, ya que especificas que el formato es JPEG. puedes cargar la foto a un TJPEGImage
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#6
|
||||
|
||||
Es que en el mismo ejemplo, un poco más abajo, viene como CARGAR la imagen, y no como GUARDARLA.
Lo hacen exactamente como te ha indicado movorack, es decir, creando un STRINGSTREAM a partir de la foto y luego cargando la imagen con LoadFromStream(elStringStream). Piensa que el WebService te devuelve bytes que puedes cargar en un StringStream sin problemas. En el ejemplo serían las líneas:
Un saludo Última edición por ElKurgan fecha: 23-10-2020 a las 16:43:49. |
#7
|
||||
|
||||
Hola ElKurgan, yo hice la prueba antes de publicar la respuesta.
Con el TIdDecoderMIME, genera error al intentar cargar la imagen. No reconoce el formato que devuelve DecodeString. En el ejemplo que le coloco, estoy usando StringOf para obtener el texto que devuelven del servicio. Y uso el TJPEGImage para cargar el Stream y por ultimo este sea asignado al TImage Ahora... al rato revisé y eliminé la asignación al TJPEGImage y "funciona", siempre y cuando en los uses esté la unidad JPEG
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#8
|
|||
|
|||
Gracias a todos
Cita:
Quiero agradecer individualmente a todos los que aportaron para dar esta solución, un abrazo. Atte, Americo Torres |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cargar Imagen en TImage | dmartinezn | C++ Builder | 5 | 09-02-2012 13:43:51 |
Cargar en timage una imagen existente | pablopessoa | Varios | 3 | 19-11-2008 15:02:43 |
Cargar una imagen jpg en un TImage | giropau | C++ Builder | 7 | 19-05-2007 07:11:07 |
Cargar imagen en un TImage | luxus | OOP | 3 | 16-02-2007 17:06:23 |
Cargar una imagen desde la web a un TImage | asegura | Gráficos | 3 | 20-10-2006 02:13:10 |
|