如何在RDLC报表上显示图像(内存流格式)

本文关键字:图像 内存 格式 显示图 显示 RDLC 报表 | 更新日期: 2023-09-27 18:13:30

我想在rdlc报告上显示条形码图像。

我使用以下代码获得该条形码图像的内存流。

https://www.nuget.org/packages/Aspose.BarCode/安装nuget

 /// This function generates the QR code image using given string and returns the ImageByteArray
    /// </summary>
    /// <param name="QRCodeString">string from which the QR code Image will generate</param>
    /// <param name="ImageWidth">Image Height</param>
    /// <param name="ImageHeight">Image Width</param>
    /// <param name="GetImageOnly">Set to true if you need only QR code image. Set to false if you need QR code image with code text below the image</param>
    /// <returns></returns>
    private MemoryStream GetQRCodeImage(string QRCodeString, int ImageWidth, int ImageHeight, bool GetImageOnly)
    {
        //Creating memory stream
        System.IO.MemoryStream ms = new System.IO.MemoryStream();
        try
        {
            Aspose.BarCode.BarCodeBuilder builder = new BarCodeBuilder();
            //Set the Code text for the barcode
            builder.CodeText = QRCodeString;
            if (GetImageOnly)
            {
                // Set the code text location
                builder.CodeLocation = CodeLocation.None;
                //Get Only Imge
                builder.GetOnlyBarCodeImage();
            }
            //Set the symbology type to 
            builder.SymbologyType = Symbology.QR;
            builder.ImageHeight = ImageHeight;
            builder.ImageWidth = ImageWidth;
            //Saving barcode image to memory stream
            builder.BarCodeImage.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
            return ms;
        }
        catch (Exception ex)
        {
            throw;
        }
        finally
        {
            //Dont dispose here
            // ms.Dispose();
        }
    }

,后来我使用这个内存流并发送到数据集,我使用在rdlc文件。

在我的。cs文件代码

   DatasetName = "DemoDataset";
                        DataTable table1 = new DataTable("Details");
                           table1.Columns.Add("Number");
                          table1.Columns.Add("BarcodeImage");
                        MemoryStream barcode = new MemoryStream();
                      barcode = GetQRCodeImage("34526172", 600, 300, false);
                        table1.Rows.Add(12222, barcode.ToArray());

在我的RDLC代码

在表中使用简单表达式访问这些值

=Fields!Number.Value
=Fields!BarcodeImage.Value

我可以得到正确的数字

但是对于BarcodeImage,我得到的值是System.ToArray()

怎么了?

如何在RDLC报表上显示图像(内存流格式)

也许你想将图像转换为位图?就像

Bitmap image = barcode.GetOnlyBarCodeImage();

我不能计算这个,因为当执行上面的代码时,我有这个错误:"抱歉,评估版不允许生成此类条码的图像。"

旧答案(而不是注释)-留作参考

你能提供类BarCodeBuilder() -不能评估没有它的代码:)