如何在报告中显示在数据库中存储为Base64字符串的图像

我有一个带有XRPictureBox组件的XtraReport。一个objectDataSource被馈送到包含数据的报表中。其中一个objectDataSource项名为“ Signature”,其值是从Canvas组件派生的……它是数据URL格式的,base64编码的(可能是PNG)位图数据,如下所示:“ data:image / png; base64, i1234lkj123; k4; l1j34l1kj3j…”

在报表设计器中,我将其作为URL表达式绑定到PictureBox,以指定objectDataSource中的[Signature]项目。

显然,这是不可操作的。该图像未显示在报告中。

如果您的对象以二进制格式存储图像,则需要为XRPictureBox.Image  属性设置一个表达式  。如果您的对象存储了图像的相对或绝对路径,请使用  XRPictureBox.ImageUrl  属性。请注意,默认情况下,通过'file://'  协议指定的图像URL  不会显示在报告中。

图像和其他报表数据存储在SQL表中,并且实体框架用于创建报表的数据源。该图像没有文件地址。如原始帖子中所示,图像以字符串格式存储。那就是我想要绑定到XRPictureBox的东西。您是说如果将它绑定到XRPictureBox.Image属性,它应该可以工作吗?

重点解决方法:

我们的  XRPictureBox  控件不能绑定到将图像存储为Base64  字符串的数据源字段  。有必要将此类字符串转换为字节数组。您可以通过以下方式在XRPictureBox.BeforePrint事件中执行此操作:

private void xrPictureBox1_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) {  
    string value = GetCurrentColumnValue("Image").ToString();  
    MemoryStream stream = new MemoryStream(Convert.FromBase64String(value));  
    (sender as XRPictureBox).Image = Image.FromStream(stream);  
}  

在附件中,您将找到显示结果的示例视频。请注意,在将字符串转换为字节数组之前,您需要删除开头的' data:image / png; base64, '子字符串。

https://supportcenter.devexpress.com/Ticket/Details/T700344/how-to-show-an-image-that-is-stored-as-the-base64-string-in-a-database-in-a-report

官方支持永远是最权威最有效的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章