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

I have binary image data in my database and I want to display it in an image control in ASP.NET. How? If this is not possible, find another way to save it in the database and display it in the image control.

+10
c # binary-data image
Sep 12 '11 at 16:26
source share
6 answers

Create a regular HTML img element, for example:

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

And in code behind do the following:

 image.src = "data:image/png;base64," + Convert.ToBase64String(imageBytes); 

Where imageBytes is a byte[] .

You are done. The image will be displayed.

+29
Sep 12 '11 at 17:00
source share

Most likely, the image is stored as a byte array in the database. If so, you can use this:

 public static System.Drawing.Image ByteArrayToImage(byte[] bArray) { if (bArray == null) return null; System.Drawing.Image newImage; try { using (MemoryStream ms = new MemoryStream(bArray, 0, bArray.Length)) { ms.Write(bArray, 0, bArray.Length); newImage = System.Drawing.Image.FromStream(ms, true); } } catch (Exception ex) { newImage = null; //Log an error here } return newImage; } 
+4
Sep 12 2018-11-11T00:
source share

In a common handler (.ashx):

  public class ImageHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { if(!string.IsNullOrEmpty(context.Request.QueryString["ImageId"])){ try { string ImageId = context.Request.QueryString["ImageId"].ToString(); ImageDataModel idm = new ImageDataModel(); byte[] ImageData = idm.getImageData(ImageId); context.Response.ContentType = "image/JPEG"; context.Response.OutputStream.Write(ImageData, 0, ImageData.Length); } 
+1
Sep 12 2018-11-12T00:
source share
 public Byte[] Ret_image(Int32 id) { SqlCommand cmd = new SqlCommand(); cmd.CommandText = "select * from tbimage where imageid=@id"; cmd.Connection = con; cmd.Parameters.Add("@id", SqlDbType.Int).Value = id; SqlDataReader dr = cmd.ExecuteReader(); dr.Read(); Byte[] ar = (Byte[])(dr[1]); dr.Close(); cmd.Dispose(); return ar; } 
+1
Jan 22 '12 at 12:24
source share
 protected void Button2_Click(object sender, EventArgs e) { Byte[] ar = Ret_image(Convert.ToInt32(TextBox2.Text)); String st = Server.MapPath("abc.jpg"); FileStream fs = new FileStream(st, FileMode.Create, FileAccess.Write); fs.Write(ar, 0, ar.Length); fs.Close(); Image1.ImageUrl = "abc.jpg"; } 

Use this event to click a button to retrieve an image and call the Ret_Image method here.

+1
Jan 22 '12 at 12:27
source share
 SqlConnection con = new SqlConnection(); string _path; Using SYstem.IO; Using System.Data.SQLClient; //convert Image to binary and save in DB private void button1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { _path = openFileDialog1.FileName; InsertInSQL(_path); } } private void InsertInSQL(string _path) { con.ConnectionString = Pic.Properties.Settings.Default.ConnectionS; string strQ = "insert into dbo.PicTBL(Pic)values(@p)"; SqlCommand command = new SqlCommand(strQ,con); command.Parameters.AddWithValue("@p",ImageToBinary(_path)); con.Open(); command.ExecuteNonQuery(); con.Close(); } public static byte[] ImageToBinary(string _path) { FileStream fS = new FileStream(_path, FileMode.Open, FileAccess.Read); byte[] b = new byte[fS.Length]; fS.Read(b, 0, (int)fS.Length); fS.Close(); return b; } //Convert Binary to imge and save in a folder private void button1_Click_1(object sender, EventArgs e) { DataTable dt = Rimage(); foreach (DataRow row in dt.Rows) { byte[] b = (byte[])row["Pic"]; Image img = BinaryToImage(b); img.Save("D:\\NewFolder\\" + row["ID"].ToString() + ".jpg"); } } private Image BinaryToImage(byte[] b) { if (b == null) return null; MemoryStream memStream = new MemoryStream(); memStream.Write(b, 0, b.Length); return Image.FromStream(memStream); } private DataTable Rimage() { con.ConnectionString = Pic.Properties.Settings.Default.ConnectionS; SqlCommand cmd = new SqlCommand(); cmd.CommandText = "select * from dbo.PicTBL"; cmd.Connection = con; SqlDataAdapter adp = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); con.Open(); adp.Fill(dt); return dt; } 
0
Jul 08 '12 at 6:29
source share



All Articles