Convert from binary data to an image control in ASP.NET

CS.aspx
  1. <form id="form1" runat="server">  
  2. <asp:DropDownList ID="ddlImages" runat="server" AppendDataBoundItems="true" AutoPostBack="true"  
  3. OnSelectedIndexChanged="FetchImage">  
  4. <asp:ListItem Text="Select Image" Value="0" />  
  5. </asp:DropDownList>  
  6. <hr />  
  7. <asp:Image ID="Image1" runat="server" Visible="false" />  
  8. </form>  
CS.aspx.cs
  1. protected void Page_Load(object sender, EventArgs e)  
  2. {  
  3. if (!this.IsPostBack)  
  4. {  
  5. ddlImages.DataSource = GetData("SP_Producto");  
  6. ddlImages.DataTextField = "ProductoNombre";  
  7. ddlImages.DataValueField = "ProductoId";  
  8. ddlImages.DataBind();  
  9. }  
  10. }  
  11. private DataTable GetData(string query)  
  12. {  
  13. DataTable dt = new DataTable();  
  14. using (SqlConnection con = new SqlConnection(@"Data Source=DataSourceName;Initial Catalog=CalalogName;User ID=sa ; password=*******"))  
  15. {  
  16. using (SqlCommand cmd = new SqlCommand(query))  
  17. {  
  18. using (SqlDataAdapter sda = new SqlDataAdapter())  
  19. {  
  20. cmd.CommandType = CommandType.Text;  
  21. cmd.Connection = con;  
  22. sda.SelectCommand = cmd;  
  23. sda.Fill(dt);  
  24. }  
  25. }  
  26. return dt;  
  27. }  
  28. }  
  29. protected void FetchImage(object sender, EventArgs e)  
  30. {  
  31. string id = ddlImages.SelectedItem.Value;  
  32. Image1.Visible = id != "0";  
  33. if (id != "0")  
  34. {  
  35. byte[] bytes = (byte[])GetData("SELECT ProductoImagen FROM Producto WHERE ProductoId =" + id).Rows[0]["ProductoImagen"];  
  36. string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);  
  37. Image1.ImageUrl = "data:image/png;base64," + base64String;  
  38. }  
  39. }  
  40. private System.Drawing.Image BinaryToImage(byte[] b)  
  41. {  
  42. if (b == null)  
  43. return null;  
  44. using (MemoryStream ms = new MemoryStream(b, 0, b.Length))  
  45. {  
  46. ms.Write(b, 0, b.Length);  
  47. System.Drawing.Image newImage = System.Drawing.Image.FromStream(ms);  
  48. return newImage;  
  49. }  
  50. }