C# 如何将图像动态绑定到图像控件?

C# 如何将图像动态绑定到图像控件?,c#,asp.net,image,dynamic,C#,Asp.net,Image,Dynamic,是的,我知道……是的,我用谷歌搜索了一下。问题是我对ASP.NET非常陌生,没有一个搜索结果符合我的要求 我有这个: <asp:Image ID="imgView" runat="server" /> 现在,如果触发了某个事件,则会从数据库中提取一个System.Drawing.Image,我想在图像控件中显示它。这里我需要一个图像Url,因此我必须将我的图像保存到服务器。我不能这样做,因为它不是System.Web.UI.WebControls.Image。我可以把它转换成一个字

是的,我知道……是的,我用谷歌搜索了一下。问题是我对ASP.NET非常陌生,没有一个搜索结果符合我的要求

我有这个:

<asp:Image ID="imgView" runat="server" />
现在,如果触发了某个事件,则会从数据库中提取一个
System.Drawing.Image
,我想在图像控件中显示它。这里我需要一个图像Url,因此我必须将我的图像保存到服务器。我不能这样做,因为它不是
System.Web.UI.WebControls.Image
。我可以把它转换成一个字节数组,但接下来呢

最温和的做法是什么

提前谢谢

希望这会有所帮助

System.IO.MemoryStream ms = new System.IO.MemoryStream();


image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
  Response.ClearContent();
  Response.ContentType = "image/Gif";
  Response.BinaryWrite(ms.ToArray());


<asp:Image ID="Image1" runat="server" ImageUrl="~/pic.aspx"/>
System.IO.MemoryStream ms=new System.IO.MemoryStream();
image.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType=“image/Gif”;
Response.BinaryWrite(ms.ToArray());
希望这会有所帮助

System.IO.MemoryStream ms = new System.IO.MemoryStream();


image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
  Response.ClearContent();
  Response.ContentType = "image/Gif";
  Response.BinaryWrite(ms.ToArray());


<asp:Image ID="Image1" runat="server" ImageUrl="~/pic.aspx"/>
System.IO.MemoryStream ms=new System.IO.MemoryStream();
image.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType=“image/Gif”;
Response.BinaryWrite(ms.ToArray());

您可以使用base64字符串显示二进制图像。差不多-

string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
Image1.ImageUrl = "data:image/png;base64," + base64String;
您可以通过演示链接获得有关此链接的更多详细信息-


您可以使用base64字符串显示二进制图像。差不多-

string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
Image1.ImageUrl = "data:image/png;base64," + base64String;
您可以通过演示链接获得有关此链接的更多详细信息-


做这样的事,我可能会为我工作,为我工作

  public class ImageToSourceConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, 
            System.Globalization.CultureInfo culture)
    {
        Image image = value as Image;
        if (image != null)
        {
            MemoryStream ms = new MemoryStream();
            image.Save(ms, image.RawFormat);
            ms.Seek(0, SeekOrigin.Begin);
            BitmapImage bi = new BitmapImage();
            bi.BeginInit();
            bi.StreamSource = ms;
            bi.EndInit();
            return bi;
        }
        return null;
    }

    public object ConvertBack(object value, Type targetType, 
        object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
创造财产

public Image UserImage
{
    get
        {
            return _model.UserImage;
        }
}   

做这样的事,我可能会工作,为我工作

  public class ImageToSourceConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, 
            System.Globalization.CultureInfo culture)
    {
        Image image = value as Image;
        if (image != null)
        {
            MemoryStream ms = new MemoryStream();
            image.Save(ms, image.RawFormat);
            ms.Seek(0, SeekOrigin.Begin);
            BitmapImage bi = new BitmapImage();
            bi.BeginInit();
            bi.StreamSource = ms;
            bi.EndInit();
            return bi;
        }
        return null;
    }

    public object ConvertBack(object value, Type targetType, 
        object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
创造财产

public Image UserImage
{
    get
        {
            return _model.UserImage;
        }
}   

您是如何生成字节[]的?它很好用-

string id = "1";
byte[] bytes = (byte[])GetData("SELECT Data FROM tblFiles WHERE Id =" + id).Rows[0]["Data"];
string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
Image1.ImageUrl = "data:image/png;base64," + base64String;


private DataTable GetData(string query)
{
        DataTable dt = new DataTable();
        string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand(query))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    cmd.CommandType = CommandType.Text;
                    cmd.Connection = con;
                    sda.SelectCommand = cmd;
                    sda.Fill(dt);
                }
            }
            return dt;
        }
    }

您是如何生成字节[]的?它很好用-

string id = "1";
byte[] bytes = (byte[])GetData("SELECT Data FROM tblFiles WHERE Id =" + id).Rows[0]["Data"];
string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
Image1.ImageUrl = "data:image/png;base64," + base64String;


private DataTable GetData(string query)
{
        DataTable dt = new DataTable();
        string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand(query))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    cmd.CommandType = CommandType.Text;
                    cmd.Connection = con;
                    sda.SelectCommand = cmd;
                    sda.Fill(dt);
                }
            }
            return dt;
        }
    }

谢谢,但正如我所说,我不能调用保存我的图像,因为它们是System.Drawing.Images类型的图像。为什么不?System.Drawing.Image对象具有保存方法。看到了吗,好的,这确实有效,谢谢你。但是没有在图像控件中显示图像,而是重定向到另一个只显示图像的页面。有什么想法吗?谢谢,但就像我说的,我不能调用保存我的图像,因为它们是System.Drawing.Images类型的。为什么不呢?System.Drawing.Image对象具有保存方法。看到了吗,好的,这确实有效,谢谢你。但是没有在图像控件中显示图像,而是重定向到另一个只显示图像的页面。有什么想法吗?这其实是有道理的,但我无法让它发挥作用。一切都很好,Url被分配,但它从来没有显示图像。这实际上是有道理的,但我无法让它工作。一切正常,Url被分配,但它从不显示图像。