I have binarydate of image in my database and I want to display it in image control in asp.net How ? if it is impossible please find another way to save it on database and display it in image control

share|improve this question
2  
Take a look at the answer to this similar question: stackoverflow.com/questions/6987433/… – IrishChieftain Sep 12 '11 at 16:29
or this one: stackoverflow.com/q/612342/76051 – Carsten König Sep 12 '11 at 16:33

6 Answers

up vote 6 down vote accepted

Create a regular HTML img element like so:

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

And in code behind do this:

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

Where imageBytes is a byte[]

You are done. The image will be displayed.

share|improve this answer

In a generic 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); 


                    }
share|improve this answer

Most likely the image is being stored as a byte array in the database. If so, then 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;
}
share|improve this answer
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;
}
share|improve this answer
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;
}
share|improve this answer
It'S All I did ! Enjoy it – Mina Mansoori Jul 8 '12 at 6:30
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 for the button click to retrieve image and call the Ret_Image method here.

share|improve this answer

Your Answer

 
or
required, but never shown
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.