我的表单上有一个 ASP.NET 控件。声明为:
<asp:imagebutton runat="server" Id="myImage1"/>
在后面的代码中,我从 Redis 数据库获取图像。我将图像读入内存。像这样:
Dim myByteArray() As Byte = myRedisDb.StringGet(myImageName)
我通过将字节数组写入磁盘然后打开磁盘文件来测试字节数组。 使用以下代码:
System.IO.File.WriteAllBytes("D:\Temp\myImage.png", myByteArray)
myImage1.ImageUrl = "D:\Temp\myImage.png"
如何将此字节分配给控件,而无需先将其写入磁盘?
使用 Redis 的全部目的是提高性能。磁盘写入和磁盘读取效率不高。
您可以读取所有图像字节,将它们转换为 Base64,然后使用数据 URI (https://en.m.wikipedia.org/wiki/Data_URI_scheme)。图像将完全内嵌在 HTML 中,这当然会使其变得更大。 有关 ASP.NET Core 的示例,但您可以转向 WebForms,请查看 https://weblogs.asp.net/ricardoperes/inline-images-with-asp-net-core。