从c#winforms中的数据库检索图像到图片框
问题描述:
如何检索图像到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;
答
一个更好的办法来做到这一点:
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;
}
}
答
尝试使用这样的:
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);