2014-09-19 120 views
0

如何检索图像到C#winforms中的图片框?我试过这段代码,但我有一个参数异常,说该参数在我的位图中是无效的。从c#winforms中的数据库检索图像到图片框

con = new SqlConnection(strConnection); 

     MemoryStream stream = new MemoryStream(); 
     con.Open(); 
     SqlCommand command = new SqlCommand(
        "select companyLogo from companyDetailsTbl where companyId = 1", con); 
     byte[] image = (byte[])command.ExecuteScalar(); 
     stream.Write(image, 0, image.Length); 
     con.Close(); 
     Bitmap bitmap = new Bitmap(stream); //This is the error 
     return bitmap; 

回答

2

一个更好的办法来做到这一点:

using (SqlConnection con = new SqlConnection(strConnection)) 
using (SqlCommand cmd = new SqlCommand("select companyLogo from companyDetailsTbl where companyId = 1", con)) 
{ 
    con.Open(); 
    using (SqlDataReader reader = cmd.ExecuteReader()) 
    { 
     if (reader.HasRows) 
     { 
      reader.Read(); 
      pictureBox1.Image = ByteArrayToImage((byte[])(reader.GetValue(0))); 
     } 
    } 
} 

public static Image ByteArrayToImage(byte[] byteArrayIn) 
{ 
    using (MemoryStream ms = new MemoryStream(byteArrayIn)) 
    { 
     Image returnImage = Image.FromStream(ms); 
     return returnImage; 
    } 
} 
1

尝试使用这样的:

byte[] image = (byte[])command.ExecuteScalar(); 
TypeConverter tc = TypeDescriptor.GetConverter(typeof(Bitmap)); 
Bitmap bitmap = (Bitmap)tc.ConvertFrom(image); 

或者:

byte[] image = (byte[])command.ExecuteScalar(); 
ImageConverter ic = new ImageConverter(); 
Image img = (Image)ic.ConvertFrom(image); 
Bitmap bitmap = new Bitmap(img); 
相关问题