把二进制数据流还原成图片问题

jiafenhaonan 2010-09-26 09:36:56
大家看看我的代码哪里有错误啊!!! 现在是这段代码在另一个窗体还用 但是到这个就不好用

报未将对想引用到实例的错误,,先说明我断点测试过 img不是空的


public ImageBig(byte[] img)
{
//把二进制数据组装入流
if (img != null)
{
using (MemoryStream ms = new MemoryStream(img))
{
//从数据流组成图片
try
{
this.pictureBox1.Image = Image.FromStream(ms);
}
catch
{

MessageBox.Show("读取图片失败!");
}

ms.Close();
ms.Dispose();
}

}
}
...全文
388 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
鸭梨山大帝 2010-09-27
  • 打赏
  • 举报
回复
大略看了下,代码没异常.

先确定img不是null
另外断点看下ms是不是null
事理 2010-09-27
  • 打赏
  • 举报
回复
ms.Close();
ms.Dispose();

删掉再试试,可能是多了这两个东西吧。用了using ,ms会自动关闭,不需要再加上这两个
shadow4222 2010-09-27
  • 打赏
  • 举报
回复
应该是错在这句
new Program().ImageBig(File.ReadAllBytes(dlg.FileName));
你new了这个类以后pictureBox1就不是你调用的类里的那个了
jshi123 2010-09-26
  • 打赏
  • 举报
回复
试下把pictureBox1删掉再重新加上
jiafenhaonan 2010-09-26
  • 打赏
  • 举报
回复
是啊 我也很纳闷来 这段代码在另一个页面运行没问题 但是在这个页面就报异常
jiafenhaonan 2010-09-26
  • 打赏
  • 举报
回复
this.pictureBox1.Image = Image.FromStream(ms);
这句报异常 未将对象引用到实例
兔子-顾问 2010-09-26
  • 打赏
  • 举报
回复
    class Program
{
[STAThread]
static void Main(string[] args)
{
OpenFileDialog dlg = new OpenFileDialog ();
dlg.Filter="*.jpg|*.jpg||";
dlg.ShowDialog();
new Program().ImageBig(File.ReadAllBytes(dlg.FileName));
Console.ReadKey();
}

private PictureBox pictureBox1 = new PictureBox();
public void ImageBig(byte[] img)
{
//把二进制数据组装入流
if (img != null)
{
using (MemoryStream ms = new MemoryStream(img))
{
//从数据流组成图片
try
{
this.pictureBox1.Image = Image.FromStream(ms);
}
catch
{

MessageBox.Show("读取图片失败!");
}

ms.Close();
ms.Dispose();
}

}
}
}


运行很正常。
yu_xiaot 2010-09-26
  • 打赏
  • 举报
回复
你调到哪一句的时候报的异常?
兔子-顾问 2010-09-26
  • 打赏
  • 举报
回复
哪句报错的?
jiafenhaonan 2010-09-26
  • 打赏
  • 举报
回复
没有高手看看?

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧