none
[SOLUCIONADO] Imagenes (Web Service + Base 64) en Crystal Reports RRS feed

  • 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.
    martes, 21 de marzo de 2017 10:37

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
    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
    martes, 21 de marzo de 2017 15:10
  •  
     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
    martes, 21 de marzo de 2017 16:43