我已在 mysql数据库的类别表中的 Longblob 数据类型的字段categoryImage中手动存储图像。我添加了一个devart linq-mysql模型来从数据库中检索数据。
我已将 linq数据源添加到转发器控件,并希望直接从数据库中检索blob数据类型图像。当我写这段代码时
<%# Eval("CategoryImage" %>
我得到一个System.Byte []作为输出。有人给我一个建议,我应该使用方法
将字节数组转换为图像 public System.Drawing.Image byteArrayToImage (System.Byte[] ByteInArray)
{
MemoryStream ms = new MemoryStream(ByteInArray);
System.Drawing.Image returnimage = System.Drawing.Image.FromStream(ms);
return returnimage;
}
当我编写此代码时<%# byteArrayToImage(Eval("CategoryImage") %>
它给出了一个错误byteArrayToImage(btye[])
有一些无效的参数。任何人都可以帮我解决这个问题。
提前感谢..
答案 0 :(得分:1)
首先,您的代码似乎没有很好地形成:
<%# byteArrayToImage(Eval("CategoryImage") %>
应该是:
<%# byteArrayToImage(Eval("CategoryImage")) %>
此外,Eval
方法返回object
,byteArrayToImage
方法参数的类型为System.Byte[]
,因此您必须将其强制转换为正确的类型。
此外,如果您明确了要应用byteArrayToImage
方法返回值的元素,那会更好。它可能无法与System.Drawing.Image
的实例一起正常工作。
如果您尝试根据<asp:Image>
创建System.Drawing.Image
控件,则只需won't work,因为该控件仅支持通过URL加载图像。
另一种方法是为您的图片创建自定义HTTP处理程序,或者使用图像内容创建文件并将URL提供给<asp:Image>
控件。