如何在c#(vs)中查看数据库中的图片文件 如何在c#(vs)中查看数据库中的图片文件具体的…… 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 读取数据库中的img类型数据到byte[],如果是winform则byte[]到stream再到image对象,否则binaryWrite直接输出到页面 WPF中使用Image控件显示数据库中图像文件的方法private BitmapFrame xxx(OleDbDataReader dr, string photoColumn) { byte[] imageByte = null; int bytesCount = 0; ImageSourceConverter isc = new ImageSourceConverter(); // 图片文件字节流(从数据库字段或文件中获取的byte[])通过ImageSourceConverter转换为BitmapFrame后,即可设置为Image控件的Source进行显示。 // 通过BitmapFrame的Decoder.CodeInfo可以获得图片信息 BitmapFrame bitmapFrame = null; object imageSource = null; // 从数据库字段中读取一幅照片 bytesCount = (int)dr.GetBytes(dr.GetOrdinal(photoColumn), 0, null, 0, 0); if (bytesCount > 0) { imageByte = new byte[bytesCount]; bytesCount = (int)dr.GetBytes(dr.GetOrdinal(photoColumn), 0, imageByte, 0, bytesCount); try { imageSource = isc.ConvertFrom(imageByte); } catch { imageSource = null; } if (imageSource != null) { bitmapFrame = imageSource as BitmapFrame; Console.WriteLine("bitmapFrame Format:", bitmapFrame.Decoder.CodecInfo.MimeTypes); } else bitmapFrame = null; //转换失败,说明图片数据错误 } //// 显示于屏幕上(线程程序需要使用Dispatcher.Invoke执行屏幕刷新) //if (bitmapFrame != null) //{ // Console.WriteLine("bitmapFrame Format:", bitmapFrame.Decoder.CodecInfo.MimeTypes); // image1.Dispatcher.Invoke(DispatcherPriority.Render, new ThreadStart(delegate { image1.Source = bitmapFrame; })); //} return bitmapFrame; } msdn上有详细的文章:HOW TO:在 Visual C# 中直接将一个图片从数据库复制到 PictureBox 控件http://support.microsoft.com/kb/317701/zh-cn 首先要确定的是你说的数据库中的图片文件是不是图片文件的存储格式.如果是的话可以读取.不是的话就......然后可以查一下msdn,上面有详细的说明,要学会用msdn,很有用的. private void button1_Click(object sender, EventArgs e) { OracleConnection ocon = new OracleConnection("Password=0000;User ID=jlrel;Data Source=arcgis;Persist Security Info=True"); OracleDataAdapter oda = new OracleDataAdapter("select image from table", ocon); DataTable dt = new DataTable(); oda.Fill(dt); byte[] barray = (byte[])dt.Rows[0][0]; FileStream fs = new FileStream("E:\\temp.jpg", FileMode.Create, FileAccess.ReadWrite); fs.Write(barray, 0, barray.Length); fs.Close(); } 本人初学LINQ,求一个简单的代码啊!谢谢 求数据库映射成类文件的代码生成器的原理 还是刚才那个问题(为什么数据库中没有那个UserName,不跳转到error3) .net时代如何防止内存泄漏? 100分求winfrom下的DataGrid的一个问题 开源分享:相当但丰富于DataTable/View数据王国的“BaiDu”超级搜索过滤控件(源码直接贴出来,欢迎转载) 哪位兄弟给一个vs.net2005 beta2的注册码,谢谢了! 是去大公司做VB还是去一般的公司做C++开发 简单的问题 关于工具栏 看看这个程序的图标源文件在哪 各位弟兄帮帮忙,USB读写问题?
private BitmapFrame xxx(OleDbDataReader dr, string photoColumn)
{
byte[] imageByte = null;
int bytesCount = 0;
ImageSourceConverter isc = new ImageSourceConverter();
// 图片文件字节流(从数据库字段或文件中获取的byte[])通过ImageSourceConverter转换为BitmapFrame后,即可设置为Image控件的Source进行显示。
// 通过BitmapFrame的Decoder.CodeInfo可以获得图片信息
BitmapFrame bitmapFrame = null;
object imageSource = null;
// 从数据库字段中读取一幅照片
bytesCount = (int)dr.GetBytes(dr.GetOrdinal(photoColumn), 0, null, 0, 0);
if (bytesCount > 0)
{
imageByte = new byte[bytesCount];
bytesCount = (int)dr.GetBytes(dr.GetOrdinal(photoColumn), 0, imageByte, 0, bytesCount);
try
{
imageSource = isc.ConvertFrom(imageByte);
}
catch
{
imageSource = null;
}
if (imageSource != null)
{
bitmapFrame = imageSource as BitmapFrame;
Console.WriteLine("bitmapFrame Format:", bitmapFrame.Decoder.CodecInfo.MimeTypes);
}
else
bitmapFrame = null; //转换失败,说明图片数据错误
}
//// 显示于屏幕上(线程程序需要使用Dispatcher.Invoke执行屏幕刷新)
//if (bitmapFrame != null)
//{
// Console.WriteLine("bitmapFrame Format:", bitmapFrame.Decoder.CodecInfo.MimeTypes);
// image1.Dispatcher.Invoke(DispatcherPriority.Render, new ThreadStart(delegate { image1.Source = bitmapFrame; }));
//}
return bitmapFrame;
}
HOW TO:在 Visual C# 中直接将一个图片从数据库复制到 PictureBox 控件
http://support.microsoft.com/kb/317701/zh-cn
然后可以查一下msdn,上面有详细的说明,要学会用msdn,很有用的.
{
OracleConnection ocon = new OracleConnection("Password=0000;User ID=jlrel;Data Source=arcgis;Persist Security Info=True");
OracleDataAdapter oda = new OracleDataAdapter("select image from table", ocon);
DataTable dt = new DataTable();
oda.Fill(dt);
byte[] barray = (byte[])dt.Rows[0][0];
FileStream fs = new FileStream("E:\\temp.jpg", FileMode.Create, FileAccess.ReadWrite);
fs.Write(barray, 0, barray.Length);
fs.Close();
}