Estoy haciendo algo similar para tener un logotipo cambiante en los informes, pero utilizo parámetros de informe para pasar el valor. No veo ninguna razón por la cual este método general no funcionaría si las imágenes fueran parte de los datos.
Esencialmente las imágenes se pasan sobre dos campos. El primer campo es el valor de tipo MIME y el segundo campo es una cadena codificada en Base64 que contiene el contenido de la imagen.
Paso 1: Convierta su imagen en codificación Base64. (Nuestro código pasa siempre ImageFormat.Png
a este método para hacer el tipo MIME fácil)
private static string ConvertImageToBase64(Image image, ImageFormat format)
{
byte[] imageArray;
using (System.IO.MemoryStream imageStream = new System.IO.MemoryStream())
{
image.Save(imageStream, format);
imageArray = new byte[imageStream.Length];
imageStream.Seek(0, System.IO.SeekOrigin.Begin);
imageStream.Read(imageArray, 0, imageStream.Length);
}
return Convert.ToBase64String(imageArray);
}
Paso 2: Pase el tipo de imagen y MIME para el informe.
reportParams[0] = new ReportParameter("ReportLogo", base64Logo);
reportParams[1] = new ReportParameter("ReportLogoMimeType", "image/png");
_reportViewer.LocalReport.SetParameters(reportParams);
Paso 3: En el informe establezca las propiedades siguientes en la imagen (sin las comillas):
- MIMEType: "
=Parameters!ReportLogoMimeType.Value
"
- Valor: "
=System.Convert.FromBase64String(Parameters!ReportLogo.Value)
"
- ACTUALIZACIÓN: Como Ger Ardo de dice a continuación, la imagen de la fuente se debe establecer en 'Base de datos'
Trampa para los jugadores jóvenes: A menudo, las imágenes se ven horribles y como si hubieran sido reducido a pesar de que estás pasando de una imagen que parece ser el "tamaño correcto". Esto se debe a que los informes se procesan para impresión (300 ppp) y no para la pantalla (generalmente 72 o 92 ppp). La solución es enviar una imagen aproximadamente 3 veces más grande, establecer su tamaño correcto en el informe y cambiar la propiedad "Sizing
" en la imagen a "FitProportional
".
¡Muchas gracias, me han ayudado mucho! – Martijn
Solo quería aclarar que la fuente de la imagen debe estar configurada en ** Base de datos **. No podría hacer que esta solución funcione hasta que establezca la propiedad de Fuente en el valor correcto. Un pequeño detalle que puede perderse si no le presta atención. –
@Adrian: Tengo el mismo problema, he intentado como describiste aquí, pero eso no funcionó para mí, por favor revisa mi pregunta [aquí] (http://stackoverflow.com/questions/42020490/base64-image-doesnt- display-on-render-pdf-from-rdlc-report) –