C# 如何在数据表中添加图像?

C# 如何在数据表中添加图像?,c#,asp.net,.net,gridview,datatable,C#,Asp.net,.net,Gridview,Datatable,如何在数据表中添加图像? 我尝试了以下代码 Image img = new Image(); img.ImageUrl = "~/images/xx.png"; dr = dt.NewRow(); dr[column] = imgdw; 但它在gridview中显示文本System.Web.UI.WebControls.Image,而不是图像。使用以下代码: DataTable table = new DataTable("ImageTable"); //Create a new DataTa

如何在数据表中添加图像? 我尝试了以下代码

Image img = new Image();
img.ImageUrl = "~/images/xx.png";
dr = dt.NewRow();
dr[column] = imgdw;
但它在gridview中显示文本
System.Web.UI.WebControls.Image,而不是图像。

使用以下代码:

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.
        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);
向表中添加新行:

DataRow row = table.NewRow();
row["MyImage"] = <Image byte array>;
tables.Rows.Add(row);
DataRow row=table.NewRow();
行[“MyImage”]=;
tables.Rows.Add(row);
查看以下代码项目链接(图像到字节[]):

请尝试以下代码:

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.
        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();
    }
所以,我们的想法是,不要试图直接存储图像,而是将其转换为字节[],然后存储,以便以后可以重新蚀刻图像并使用它,或者将其分配给如下图片框:

 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;
    }

如果目的是在GridView中显示图像,那么我个人不会将实际图像存储在DataTable中,只存储图像路径。存储映像只会不必要地膨胀数据表。显然,只有当您的映像存储在文件系统中而不是数据库中时,才会出现这种情况

要在GridView中显示图像,请使用模板字段

e、 g

dr=dt.NewRow();
dr[column]=“~/images/xx.png”;
' />

当您将图像路径存储在数据库中而不是存储原始图像时,这也会很好地工作。

您需要访问该对象的正确属性才能获取图像。您是否有图像对象或图像路径。您好。您是否解决了此问题?因为我现在正在做,下面的答案都没有帮助。