如何在報告中顯示在數據庫中存儲爲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

官方支持永遠是最權威最有效的。

 

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