c# 用截图工具把图片截到了picturebox1.image中了,想把这个picturebox1中的图片存储到sql中,请问怎么存?
c#用截图工具把图片截到了picturebox1.image中了,想把这个picturebox1中的图片存储到sql中,请问怎么存?我知道是先把图片转换成二进制,再存储,...
c# 用截图工具把图片截到了picturebox1.image中了,想把这个picturebox1中的图片存储到sql中,请问怎么存?我知道是先把图片转换成二进制,再存储,但是找了好久都没解决!希望能有详细的代码!
解决问题悬赏50,拜托了。。。 展开
解决问题悬赏50,拜托了。。。 展开
2个回答
展开全部
下面的代码是在winform里做的,C#,应该符合你的要求--“把图片转换成二进制,再存储”
private void button1_Click(object sender, EventArgs e)
{
byte[] imageBytes = GetImageBytes(pictureBox1.Image);//GetImageBytes()是自定义函数,见下面
string connStr = @"Data Source=JNITDEV\SQLEXPRESS;Initial Catalog=Picture;Integrated Security=True";
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;
}
private void button1_Click(object sender, EventArgs e)
{
byte[] imageBytes = GetImageBytes(pictureBox1.Image);//GetImageBytes()是自定义函数,见下面
string connStr = @"Data Source=JNITDEV\SQLEXPRESS;Initial Catalog=Picture;Integrated Security=True";
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;
}
追问
兄弟,还差一点点,
GetImageBytes()自定义函数
提示:
不可访问,因为它受保护级别限制
追答
不明白你说的。受保护级别?能说一下是哪个对象或者其他什么东西提示受保护级别吗。能给个报错的截图么,详细点的。
展开全部
我喜欢用路径来存
做法是:利用FileUpload
string filepath = FileUpload1.PostedFile.FileName;//路径
string filename = FileUpload1.FileName;//文件名,不带路径
string fileEx = filepath.Substring(filepath.LastIndexOf(".")+1);//取得后缀名
if(fileEx=="jpg"||fileEx=="bmp"||fileEx=="gif"){//规定图片格式
string serverpath = Server.MapPath("~/images/") + filename;//保存文件路径
FileUpload1.PostedFile.SaveAs(serverpath);//上传到服务器,先新建一个images文件夹来存放图片
string name = this.username.Text.ToString();//获取姓名
string content1 = this.content.Text.ToString();//获取内容
string photo = serverpath;//获取文件路径
这样就可以把图片上传到images文件夹里面,还获取到了路径,然后就利用sql插入语句插进数据库,
读取的时候:<img alt='<%#Eval("id") %>' src='<%#Eval("photodata") %>' />
做法是:利用FileUpload
string filepath = FileUpload1.PostedFile.FileName;//路径
string filename = FileUpload1.FileName;//文件名,不带路径
string fileEx = filepath.Substring(filepath.LastIndexOf(".")+1);//取得后缀名
if(fileEx=="jpg"||fileEx=="bmp"||fileEx=="gif"){//规定图片格式
string serverpath = Server.MapPath("~/images/") + filename;//保存文件路径
FileUpload1.PostedFile.SaveAs(serverpath);//上传到服务器,先新建一个images文件夹来存放图片
string name = this.username.Text.ToString();//获取姓名
string content1 = this.content.Text.ToString();//获取内容
string photo = serverpath;//获取文件路径
这样就可以把图片上传到images文件夹里面,还获取到了路径,然后就利用sql插入语句插进数据库,
读取的时候:<img alt='<%#Eval("id") %>' src='<%#Eval("photodata") %>' />
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询