时间:2021-07-01 10:21:17 帮助过:31人阅读
这个是在百度知道上回答问题时看到的,一时没有做出来,看了一些资料才弄清楚的。 主要有两个点: 1.对流的操作不熟悉,不知道图片Image对象是可以”保存“到MemoryStream中的; image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg); 2.二进制数
这个是在百度知道上回答问题时看到的,一时没有做出来,看了一些资料才弄清楚的。
主要有两个点:
1.对流的操作不熟悉,不知道图片Image对象是可以”保存“到MemoryStream中的;
image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg);
2.二进制数据插入到数据库的操作不清楚。
SqlParameter param = new SqlParameter("ImgData", SqlDbType.VarBinary, imageBytes.Length);
param.Value = imageBytes;
cmd.Parameters.Add(param);下面贴上代码
private void button1_Click(object sender, EventArgs e)
{
byte[] imageBytes = GetImageBytes(pictureBox1.Image);
string connStr = "SQL Server连接字符串";
using (SqlConnection conn = new SqlConnection(connStr))
{
string sql = "Insert Into T_Img Values (@ImgData) ";
using (SqlCommand cmd = new SqlCommand(sql))
{
SqlParameter param = new SqlParameter("ImgData", SqlDbType.VarBinary, imageBytes.Length);
param.Value = imageBytes;
cmd.Parameters.Add(param);
cmd.Connection = conn;
conn.Open();
int i = cmd.ExecuteNonQuery();
MessageBox.Show(i.ToString());
}
}
}
private byte[] GetImageBytes(Image image)
{
MemoryStream mstream = new MemoryStream();
image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] byteData = new Byte[mstream.Length];
mstream.Position = 0;
mstream.Read(byteData, 0, byteData.Length);
mstream.Close();
return byteData;
}

上传了源代码:http://download.csdn.net/detail/frombegintoend/4403728