Principales respuestas
[SOLUCIONADO] Imagenes (Web Service + Base 64) en Crystal Reports

Pregunta
-
Buenos días,
tengo creado el siguiente xml:
<xs:element name="Envio" minOccurs="0" type="xs:string"/> <xs:element name="Image" minOccurs="0" type="xs:base64Binary"/>
pero cuando lo enlazo con el crystal report solo me muestra el campo string, la imagen no consigo que se muestre.
Si he conseguido que se muestre en un picturebox de un formulario de vb.net y en una columna de un datagridview.
¿Alguien me puede ayudar para hacer que el crystal report me muestre la imagen?
Gracias!!!!
- Editado Zangetsu17 martes, 21 de marzo de 2017 16:44
- Cambiado Enrique M. Montejo miércoles, 22 de marzo de 2017 6:54 Pregunta relacionada con Crystal Reports.
Respuestas
-
midata = System.Convert.FromBase64String(base64Encoded) probar(midata) Private Function probar(ByVal arr As Byte()) As Byte() Dim ms As New MemoryStream(arr, 0, arr.Length) Dim tmpImage As Image = Image.FromStream(ms, True) tmpImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png) ms.Position = 0 Using m As New MemoryStream() tmpImage.Save(m, System.Drawing.Imaging.ImageFormat.Png) Dim imagenArr As Byte() = m.ToArray() Return imagenArr End Using end function
Solucionado!!, no se si sobrara código porque estuve realizando varias pruebas. Con esto puedo usar la devolución del web service directamente en el report sin tener que crear la imagen fisica.
- Marcado como respuesta Zangetsu17 martes, 21 de marzo de 2017 16:43
Todas las respuestas
-
He conseguido que funcione con este código
Dim fs As FileStream = New FileStream(filename, FileMode.Open, FileAccess.Read) Dim br As BinaryReader = New BinaryReader(fs) Return br.ReadBytes(System.Convert.ToInt32(br.BaseStream.Length)
pero previamente tenia que crear la imagen fisica en una carpeta para pasarle el filename al fs.
Lo que obtengo del web service es un string en base 64 y me gustaria no tener que estar creando las imagenes en el disco.
¿Se podria hacer lo anterior usando el string de la imagen que obtengo del web service?
midata = System.Convert.FromBase64String(base64Encoded)
NOTA: Con la linea anterior, en la columna del datagridview, me muestra la imagen pero cuando mando el string de bytes al xml para el crystal report no me muestra la imagen.
Gracias!!!.
- Editado Zangetsu17 martes, 21 de marzo de 2017 16:03
-
midata = System.Convert.FromBase64String(base64Encoded) probar(midata) Private Function probar(ByVal arr As Byte()) As Byte() Dim ms As New MemoryStream(arr, 0, arr.Length) Dim tmpImage As Image = Image.FromStream(ms, True) tmpImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png) ms.Position = 0 Using m As New MemoryStream() tmpImage.Save(m, System.Drawing.Imaging.ImageFormat.Png) Dim imagenArr As Byte() = m.ToArray() Return imagenArr End Using end function
Solucionado!!, no se si sobrara código porque estuve realizando varias pruebas. Con esto puedo usar la devolución del web service directamente en el report sin tener que crear la imagen fisica.
- Marcado como respuesta Zangetsu17 martes, 21 de marzo de 2017 16:43