将图像从数据库显示到图像控件

时间:2016-03-21 01:10:13

标签: c# asp.net image

private void MovieDisp1()
{
    SqlConnection cn = new SqlConnection("Data Source = localhost; Initial Catalog = CinemaProj; Integrated Security = SSPI");
    SqlCommand cmd = new SqlCommand();
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    cmd.Connection = cn;
    cmd.CommandType = CommandType.Text;
    cn.Open();
    cmd.CommandText = "Select CM_MovieName, CM_MovieDesc, CM_MovieImage from Tbl_CMovies where CM_ID = '1'";
    SqlDataReader rd = cmd.ExecuteReader();

    while (rd.Read())
    {
        labelmoviename1.Text = rd[0].ToString();
        labelmoviedesc1.Text = rd[1].ToString();
        byte[] img = (byte[])(rd[2]);
        if(img == null)
        {
            ImageMovie1.Image = null;
        }
        else
        {
            MemoryStream ms = new MemoryStream(img);
            ImageMovie1.Image = Image.FromStream(ms);
        }
    }
    cn.Close();
}

我创建了一个名为MovieDisp1的方法来检索数据库中的所有信息,包括图像。但现在我在

发生了错误
  

ImageMovie1.Image = null

以及

  

ImageMovie1.Image = Image.FromStream(ms)

错误是这样的:

' System.Web.UI.WebControls.Image'不包含'图像'的定义没有扩展方法' Image'接受类型' System.Web.UI.WebControls.Image'的第一个参数。可以找到(你错过了使用指令或汇编引用吗?)

这是否意味着我无法使用.Image进行图像控制?是否有任何扩展方法可以使用,以便我可以修复此错误?谢谢!

2 个答案:

答案 0 :(得分:0)

首先要考虑的是,数据库中Image的数据类型应为VarBinary(MAX)。

 using(SqlConnection cn = new SqlConnection("Data Source = localhost; Initial Catalog = CinemaProj; Integrated Security = SSPI"))
{
            SqlCommand cmd = new SqlCommand("SELECT IMAGE FROM t_TableName WHERE ID=1", cn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
           DataSet ds = new DataSet();
           da.fill(ds);

        foreach(DataRow dr in ds.Table[0].Rows)
        {
            imgByte = (byte[])(dr["Image"]);
        }
        string strBase64 = Convert.ToBase64String(imgByte);
}

// <img>代码使用此代码(imgF是img TAG的ID):

imgF.Src = "data:Image/png;base64," + strBase64;

// <asp:Image>使用此代码:

imgF.ImageUrl = "data:Image/png;base64," + strBase64;

答案 1 :(得分:-1)

请尝试阅读:ASP Image Class

而且:Use Byte Array to Create an Image

另一个:how-to-display-image-from-database

不是试图将数据库图像转换为图像对象,而是只获取数据并将其存储在byte []数组中,并直接在图像src中使用二进制数据。

创建图片元素:

<img runat="server" id="image" />

然后将该字节数组传递给image标签.src属性。有关here.

的更多信息