如何在不使用图像url的情况下将内存流绑定到asp.net图像控件
我们有一个新的要求,即在结果网格中显示每个记录的签名图像。目前,我们在数据库中以base64格式存储签名图像。我们能够将base64转换为内存流。如何在不使用图像url的情况下将内存流绑定到asp.net图像控件,asp.net,Asp.net,我们有一个新的要求,即在结果网格中显示每个记录的签名图像。目前,我们在数据库中以base64格式存储签名图像。我们能够将base64转换为内存流。 我们想了解您的图像控件是否支持从内存流而不是Url绑定图像。您可以将图像保留为base64字符串形式,并使用数据Url。 下面是一个例子 <asp:Image runat="server" ID="myImage" /> 前提是您需要知道所有MIME类型的图像 参考资料:当然,你可以这样做
我们想了解您的图像控件是否支持从内存流而不是Url绑定图像。您可以将图像保留为base64字符串形式,并使用数据Url。 下面是一个例子
<asp:Image runat="server" ID="myImage" />
前提是您需要知道所有MIME类型的图像
参考资料:当然,你可以这样做 gridview、listview、repeater控件—它们都可以做到这一点 因此,网格视图的标记:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Animal" HeaderText="Animal" ItemStyle-Width="200px"/>
<asp:TemplateField HeaderText="Picture">
<ItemTemplate>
<asp:Image ID="Image1" runat="server"
Height="128px" Width="128px"
src='<%# "Data:Image/png;base64," + Eval("Image") %>'
/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
结果:
现在,我使用了一个直接求值表达式,但也可以使用gridview(或列表视图)的ItemDataBound事件
此外,我还硬编码了上面的“我的”类型(假定为.png)。您可能经常需要考虑将文件/挖掘类型保存为数据库中的额外列。但是,如果图片类型都是相同的类型,那么在上面的表达式中使用硬代码就可以了
如果这个网格有很多列,那么我倾向于切换到listview,因为每个列都不需要模板,我发现快速和脏的网格视图是可以的,但是listview更适合调整和大量定制。诀窍是让VisualStudio生成模板+标记,然后吹出除item template之外的所有模板。当你这么做的时候,疯狂的标记会被减少到“简单”的程度。然后,您可以更轻松地插入控件,而不必使用模板
因此,上述相同的列表视图如下所示:
<asp:ListView ID="ListView1" runat="server">
<ItemTemplate>
<tr style="">
<td><asp:Label ID="AnimalLabel" runat="server" Text='<%# Eval("Animal") %>' /></td>
<td>
<asp:Image ID="ImageT1" runat="server"
Height="128px" Width="128px"
src='<%# "Data:Image/png;base64," + Eval("Image") %>'
/>
</td>
</tr>
</ItemTemplate>
<LayoutTemplate>
<table id="itemPlaceholderContainer" runat="server" border="0" style="">
<tr runat="server" style="">
<th runat="server" width="200">Animal</th>
<th runat="server">Image</th>
</tr>
<tr id="itemPlaceholder" runat="server">
</tr>
</table>
</LayoutTemplate>
</asp:ListView>
后面的代码将与上面的100%相同。您的意思是要以json数据显示来自服务器的图像作为标记吗?不,我必须将该内存流绑定到标记谢谢您提供base 64 to bmp转换器链接,但我不需要该转换器链接。我正在从数据库中获取图像的base 64值,我想使用asp.net图像控件将其转换为图像,而不使用asp图像控件标记中的图像url属性。非常感谢,它对我有效
<asp:ListView ID="ListView1" runat="server">
<ItemTemplate>
<tr style="">
<td><asp:Label ID="AnimalLabel" runat="server" Text='<%# Eval("Animal") %>' /></td>
<td>
<asp:Image ID="ImageT1" runat="server"
Height="128px" Width="128px"
src='<%# "Data:Image/png;base64," + Eval("Image") %>'
/>
</td>
</tr>
</ItemTemplate>
<LayoutTemplate>
<table id="itemPlaceholderContainer" runat="server" border="0" style="">
<tr runat="server" style="">
<th runat="server" width="200">Animal</th>
<th runat="server">Image</th>
</tr>
<tr id="itemPlaceholder" runat="server">
</tr>
</table>
</LayoutTemplate>
</asp:ListView>