如何在数据表中添加图像? 我尝试了以下代码,
Image img = new Image();
img.ImageUrl = "~/images/xx.png";
dr = dt.NewRow();
dr[column] = imgdw;
但它在gridview中显示文字System.Web.UI.WebControls.Image
而不是图片。
答案 0 :(得分:6)
试试这段代码:
DataTable dt = new DataTable();
dt.Columns.Add("col1", typeof(byte[]));
Image img = Image.FromFile(@"physical path to the file");
DataRow dr = dt.NewRow();
dr["col1"] = imageToByteArray(img);
dt.Rows.Add(dr);
其中imageToByteArray
是
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
所以想法是不要试图直接存储图像,而是将其转换为byte []然后存储它,以便稍后您可以重新获取它并使用它或将其分配给如下的图片框:
pictureBox1.Image = byteArrayToImage((byte[])dt.Rows[0]["col1"]);
其中byteArrayToImage
是:
public Image byteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage;
}
答案 1 :(得分:2)
使用此代码:
DataTable table = new DataTable("ImageTable"); //Create a new DataTable instance.
DataColumn column = new DataColumn("MyImage"); //Create the column.
column.DataType = System.Type.GetType("System.Byte[]"); //Type byte[] to store image bytes.
column.AllowDBNull = true;
column.Caption = "My Image";
table.Columns.Add(column); //Add the column to the table.
向表中添加新行:
DataRow row = table.NewRow();
row["MyImage"] = <Image byte array>;
tables.Rows.Add(row);
查看以下代码项目链接(Image to byte []):
答案 2 :(得分:2)
如果目的是在GridView中显示图像,那么我个人不会将实际图像存储在DataTable中,只存储图像路径。存储图像只会不必要地膨胀DataTable。显然,只有当您的图像存储在FileSystem而不是DataBase中时才会这样。
要在GridView中显示图像,请使用 TemplateField
e.g。
dr = dt.NewRow();
dr[column] = "~/images/xx.png";
<asp:TemplateField>
<ItemTemplate>
<img src='<%#Eval("NameOfColumn")%>' />
</ItemTemplate>
</asp:TemplateField>
当您将图像路径存储在数据库中而不是存储原始图像时,这也可以正常工作。