从数据库sql server 读取图片A generic error occurred in GDI+.错误
private void button1_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@"Data source=HERO;Integrated Security = SSPI;Initial Catalog = DevAndInnov");
conn.Open();
SqlCommand cmd = new SqlCommand("select im from test where xh='1a11'", conn);
byte[] b = (byte[])cmd.ExecuteScalar();
if (b.Length > 0)
{
MemoryStream stream = new MemoryStream(b, true);
stream.Write(b, 0, b.Length);
pictureBox1.Image = new Bitmap(stream);//该行出错*************
stream.Close();
}
}
请高手指教数据库im字段类型image
------解决方案--------------------
你为什么还要
ms.Write(b, 0, b.Length); ?
直接
byte[] b = (byte[])cmd.ExecuteScalar();
if (b.Length > 0)
{
MemoryStream stream = new MemoryStream(b, true);
pictureBox1.Image = new Bitmap(stream);
stream.Close();
}
不就可以了
------解决方案--------------------
C# code
SqlConnection conn = new SqlConnection("server=.;database=dbImate;uid=sa;pwd=;");
conn.Open();
SqlCommand cmd = new SqlCommand("select * from [image]", conn);
SqlDataReader dr = cmd.ExecuteReader();
dr.Read();
MemoryStream ms = new MemoryStream((Byte[])dr["pic"]);
Bitmap image = new Bitmap(ms);
image.Save(Server.MapPath("~/1.jpg"));
this.Image1.ImageUrl = "1.jpg";
dr.Close();
conn.Close();
------解决方案--------------------
C# code
byte[] b = (byte[])cmd.ExecuteScalar();
if (b.Length > 0)
{
MemoryStream stream = new MemoryStream(b, true);
stream.Position = 0;//加上这句看看
pictureBox1.Image = new Bitmap(stream);
stream.Close();
}