【发布时间】:2018-02-24 22:05:09
【问题描述】:
我正在尝试从 WPF 中的 .mdb 数据库加载图像。我正在使用此代码:
public void loadimg()
{
con.Open();
OleDbCommand cmd = new OleDbCommand("Select * from recents", con);
DataTable table = new DataTable;
OleDbDataAdapter adap = new OleDbDataAdapter(cmd);
adap.Fill(table);
if (table.Rows.Count <= 0)
{
MsgBox("nooo");
}
else
{
MemoryStream stream = new MemoryStream();
StreamWriter stm;
BinaryWriter writer = new BinaryWriter(stream);
int bufferSize = 100;
byte[] outByte = new byte[bufferSize + 1];
long retval;
long startIndex = 0;
string pubID = "";
OleDbDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
reader.Read();
while (reader.Read())
{
startIndex = 0;
retval = reader.GetBytes(1, startIndex, outByte, 0, bufferSize);
while (retval == bufferSize)
{
writer.Write(outByte);
writer.Flush();
startIndex += bufferSize;
retval = reader.GetBytes(1, startIndex, outByte, 0, bufferSize);
}
writer.Write(outByte, 0, (int)retval - 1);
writer.Flush();
}
reader.Close();
con.Close();
stream.Position = 0;
stream.Seek(0, SeekOrigin.Begin);
System.Drawing.Image _Image = System.Drawing.Image.FromStream(stream);
image1.Source = System.Windows.Media.Imaging.BitmapFrame.Create(stream);
}
}
上面的代码返回错误:
找不到适合完成此操作的成像组件。
我花了几个小时试图弄清楚如何解决它。任何帮助将不胜感激。
更新 在 cmets 中,有人问我是否正确插入了数据。好吧,这是我用来插入数据的代码:
public void adddata()
{
con.Open();
OleDbCommand cmd = new OleDbCommand("Insert into recents(Pic)values(@pic)", con);
byte[] data;
System.Drawing.Image myimage = System.Drawing.Image.FromFile("E:\\19686468_1419770068104721_1127495277_o.png");
using (MemoryStream ms = new MemoryStream())
{
myimage.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
data = ms.ToArray();
}
cmd.Parameters.AddWithValue("@pic", data);
cmd.ExecuteNonQuery();
con.Close();
}
请帮帮我!
【问题讨论】:
-
哪一行给出了错误?假设它是最后一行,我的猜测是你消费了两次流(第一次在上一行)而没有回到起点。我不记得了,但我认为在使用 Image.FromStream 时可能无法实现。您可能必须先制作另一个数据副本。
-
image.fromstream引发错误....任何帮助? -
你用谷歌搜索过这条消息吗?当我尝试它时,我得到了一些点击。在您的问题中添加一些详细信息,以表明您尝试过的内容以及获得的结果。以及您在 Google 上搜索的内容,以及这些解决方案使您失败的原因。
-
我尝试将内存流转换为可写位图,但没有成功.....
-
和@GreatBigBore,我用谷歌搜索并尝试了msdn、codeproject.SO甚至asp.net论坛中给出的每一个解决方案,但没有运气..问题是,没有人面对我的风景(之前从 db 检索图像时出错,因为谷歌结果显示其他场景
标签: c# wpf image memorystream