5

データテーブルに画像を追加するにはどうすればよいですか?次のコードを試しました。

Image img = new Image();
img.ImageUrl = "~/images/xx.png";
dr = dt.NewRow();
dr[column] = imgdw;

ただし、画像ではなくグリッドビューでテキストが表示System.Web.UI.WebControls.Imageされます。

4

3 に答える 3

7

このコードを試してください:

        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;
    }
于 2013-03-13T08:35:40.673 に答える
2

目的がGridView内に画像を表示することである場合、個人的には実際の画像をDataTable内に保存するのではなく、画像パスのみを保存します。画像を保存すると、DataTableが不必要に肥大化するだけです。明らかに、これは画像がデータベースではなくファイルシステムに保存されている場合にのみ発生します。

GridView内に画像を表示するには、TemplateFieldを使用します

例えば

dr = dt.NewRow();
dr[column] = "~/images/xx.png";

<asp:TemplateField>
     <ItemTemplate>                    
         <img src='<%#Eval("NameOfColumn")%>' />
     </ItemTemplate>
</asp:TemplateField>

これは、生の画像を保存するのではなく、データベースに画像パスを保存する場合にもうまく機能します。

于 2013-03-13T09:07:52.977 に答える
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);

次のコード プロジェクト リンク (イメージからバイト []) を確認してください。

コード プロジェクト

于 2013-03-13T08:31:57.770 に答える