图片上传与显示 Winform中,如果实现上传多张图片,并放入数据库中,又如何在Winform中显示这些图片呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果是保存在数据库,直接以字节的方法写入资料库,显示时读取字段就行. 如果以实体文件存在,可以用ftp方式.以循环的方式按照上面的方法可以保存多张图片 看需求,如果是保存在数据库的话,那必须使用byte[],保存时,先把图片数据转换成byte[],这个不用教了吧,然后通过参数传进数据库例如,string sql = "insert into lib(imagedata) values(@imagedata)"; sqlparameter p = new sqlparameter("@imagedata", byte[]);读取数据时,读取到的是byte[]数据,需要再转换成Image对象。 openfiledialog选择多文件循环添加到数据库OpenFileDialog openFileDialog1 = new OpenFileDialog();if(openFileDialog1.ShowDialog() == DialogResult.OK){} 1、图片存硬盘上,数据库存相对路径;2、图片用10进制格式直接存在数据库,具体做法可能涉及到Image 类的用法 ,MSDN上查 以下为我的显示代码 try { list.Clear(); liststr.Clear(); listpath.Clear(); dataGridView1.Columns.Clear(); if (LblCarAutoId.Text != "") { string sql = "select AutoId,oleImg from tCarImg where iPID=@autoid"; SqlParameter parame = new SqlParameter("@autoid", SqlDbType.BigInt); parame.Value = Convert.ToInt32(LblCarAutoId.Text); SqlDataReader sdr = DataBase.getDataReader(sql, parame); while (sdr.Read()) { if (sdr["oleImg"].GetType() != typeof(DBNull)) { Image image = Image.FromFile(sdr["oleImg"].ToString()); Image ReducedImage; Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback); ReducedImage = image.GetThumbnailImage(50, 50, callb, IntPtr.Zero); list.Add(ReducedImage); liststr.Add(sdr["AutoId"].ToString()); listpath.Add(sdr["oleImg"].ToString()); } } sdr.Close(); } } catch (Exception e) { }保存多种和保存一张一样,只是循环保存图片 还有这段代码: DataGridViewImageColumn img = new DataGridViewImageColumn(); this.dataGridView1.Columns.Insert(0, img); int i = 0; foreach (Image image in list) { dataGridView1.Rows.Add(); this.dataGridView1[0, i].Value = image; dataGridView1.Rows[i].Height = 60; i++; } 装了VA_X将vs2010中的智能感应覆盖掉了,请问如何恢复过来? 读取连接电脑COM口的电子天枰数据 C#中的按钮事件(快捷键) C#基础问题 请高手指教 谢谢 ASP.net中使用datagrid显示文章标题,太长的话会另起一行,怎样可以使显示的内容超过指定字符就显示...? treeview和数据库 如何让主函数等待一段时间? 求动态加载多个backgroundworker同时运行的处理方式。。。 求将EMF格式转为PDF格式的代码和方法..... 怎样才能用C#后期绑定Excel,能否给一些对其单元操作的代码,谢先 C# 读取excel 如何清理WebBrowser的缓存
如果以实体文件存在,可以用ftp方式.以循环的方式按照上面的方法可以保存多张图片
保存时,先把图片数据转换成byte[],这个不用教了吧,然后通过参数传进数据库
例如,string sql = "insert into lib(imagedata) values(@imagedata)"; sqlparameter p = new sqlparameter("@imagedata", byte[]);
读取数据时,读取到的是byte[]数据,需要再转换成Image对象。
循环添加到数据库OpenFileDialog openFileDialog1 = new OpenFileDialog();
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
}
2、图片用10进制格式直接存在数据库,具体做法可能涉及到Image 类的用法 ,MSDN上查
try
{
list.Clear();
liststr.Clear();
listpath.Clear();
dataGridView1.Columns.Clear();
if (LblCarAutoId.Text != "")
{
string sql = "select AutoId,oleImg from tCarImg where iPID=@autoid";
SqlParameter parame = new SqlParameter("@autoid", SqlDbType.BigInt);
parame.Value = Convert.ToInt32(LblCarAutoId.Text);
SqlDataReader sdr = DataBase.getDataReader(sql, parame);
while (sdr.Read())
{
if (sdr["oleImg"].GetType() != typeof(DBNull))
{
Image image = Image.FromFile(sdr["oleImg"].ToString());
Image ReducedImage;
Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);
ReducedImage = image.GetThumbnailImage(50, 50, callb, IntPtr.Zero);
list.Add(ReducedImage);
liststr.Add(sdr["AutoId"].ToString());
listpath.Add(sdr["oleImg"].ToString());
}
}
sdr.Close();
}
}
catch (Exception e)
{
}
保存多种和保存一张一样,只是循环保存图片
this.dataGridView1.Columns.Insert(0, img);
int i = 0;
foreach (Image image in list)
{
dataGridView1.Rows.Add();
this.dataGridView1[0, i].Value = image;
dataGridView1.Rows[i].Height = 60;
i++;
}