C#.net软件 图片上传问题

hbbliyong 2009-09-01 06:37:21
C#。net软件
图片先在PicturesBox中显示,然后上传。两种方法。
1. Image image = Image.FromFile(Aofd.FileName);
MemoryStream ms = new MemoryStream();
image.Save(ms, ImageFormat.Jpeg);
ms.Flush();
ms.Seek(0, SeekOrigin.Begin);
byte[] buffer = new byte[ms.Length];
ms.Read(buffer, 0, (int)ms.Length);//这里已经转成了字节
ms.Close();


MemoryStream ms2 = new MemoryStream(buffer, 0, buffer.Length);
ms2.Seek(0, SeekOrigin.Begin);
Image image2 = Image.FromStream(ms2);
pbShow.Image = image2;
ms2.Close();
ms2.Dispose();
2.

FileStream fileStream = new FileStream(Aofd.FileName, FileMode.Open, FileAccess.Read);
BinaryReader binaryReader = new BinaryReader(fileStream);
byte[] img = binaryReader.ReadBytes((int)fileStream.Length);
binaryReader.Close();
fileStream.Close();

MemoryStream Ams = new MemoryStream(img);
Bitmap Abit = new Bitmap(Ams);
pbShow.Image = (Image)Abit;
Ams.Close();
第一种方法很容易出错误,可能是内存问题,有熟悉给解释下。
...全文
63 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
dancingbit 2009-09-01
  • 打赏
  • 举报
回复
1. Image image = Image.FromFile(Aofd.FileName);
MemoryStream ms = new MemoryStream();
image.Save(ms, ImageFormat.Jpeg);
ms.Flush();
ms.Seek(0, SeekOrigin.Begin);
byte[] buffer = new byte[ms.Length];
ms.Read(buffer, 0, (int)ms.Length);//这里已经转成了字节
ms.Close();


MemoryStream ms2 = new MemoryStream(buffer, 0, buffer.Length);
ms2.Seek(0, SeekOrigin.Begin);
Image image2 = Image.FromStream(ms2);
pbShow.Image = image2;
ms2.Close();
ms2.Dispose();
---------------------------------
上面是准备发送的数据,下面是将接收的数据转成Image?
上面有些操作是多余的:
1. Image image = Image.FromFile(Aofd.FileName);
MemoryStream ms = new MemoryStream();
image.Save(ms, ImageFormat.Jpeg);
byte[] buffer = ms.GetBuffer();
ms.Close();
ms.Dispose();


MemoryStream ms2 = new MemoryStream();
ms2.Write(buffer,0,buffer.Length);
Image image2 = Image.FromStream(ms2);
pbShow.Image = image2;
ms2.Close(); //恐怕这儿不能关,更不能销毁
ms2.Dispose(); //在Image的生存期内,流必须保持打开

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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