请大家介绍下在winform中,有些什么方法可以数据转换成字节数组?[说的多分就多]

stg609 2008-04-05 11:11:06
因为编程中经常遇到要将图片或文件转换为byte[]数组的,但是思路比较混乱,感觉有很多方法,又不知道具体有些什么方法及各方法之间的区别.好像有用过memorystream,Binarybyte什么之类的,但是很模糊.不清楚各自的用法和区别.

我希望大家能介绍下大家知道的几种方法将"e:\image.ico"转换成字节数组.
要求:
(1)介绍一下该方法,并要写出如何使用该方法
(2)介绍任意几种已提供方法之间的区别(比如介绍1楼和2楼所给方法的区别)

给分:

每介绍一种方法给予10分(如果两种方法相同,根据使用方法的详细与否给分.如果均相同则根据早到早得的方法给分);
每介绍一次几种方法间的区别,给10分(如果已有人介绍过,则根据详细与否给分)

注:如果按照以上方法给分后分数仍有剩余,则平分剩余的分数.如果分数不够,我会另外加分.当然大家也可以推荐下其它文章或链接什么的.

以上给分方法按照具体情况具体处理.

最终解释权归:stg609.
...全文
195 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
stg609 2008-04-07
  • 打赏
  • 举报
回复
结贴了!喽~~~
stg609 2008-04-06
  • 打赏
  • 举报
回复
新的一天了,有新的答案吗?如果没有就要结贴喽!
stg609 2008-04-05
  • 打赏
  • 举报
回复
没有了吗????
一品梅 2008-04-05
  • 打赏
  • 举报
回复
哦,明白了,你的声明语句和后台代码中都定义了该事件,将声明语句中的删除.
stg609 2008-04-05
  • 打赏
  • 举报
回复
夜深了,快睡了.最后再来捧捧.
stg609 2008-04-05
  • 打赏
  • 举报
回复
嘿嘿!写得不当之处,请大侠们多多包含
Kshatriya 2008-04-05
  • 打赏
  • 举报
回复
http://www.cnblogs.com/shouzheng/archive/2008/03/05/901866.html
Kshatriya 2008-04-05
  • 打赏
  • 举报
回复
是对象的序列化问题.


http://www.idcnews.net/html/edu/net/20071224/12351.html
http://www.chenjiliang.com/Article/View.aspx?ArticleID=2410&TypeID=84
http://i.yiqifei.com/s.sams/articles/325.html
viki117 2008-04-05
  • 打赏
  • 举报
回复
Byte[] signMeaningImage ;
FileStream stream = null;
string dev = System.Environment.SystemDirectory.ToString();
rtbSignMeaning.SaveFile( dev.Substring(0,3)+"Sign.rtf" );
stream = new FileStream(dev.Substring(0,3)+"Sign.rtf", FileMode.Open, FileAccess.Read);

int size = Convert.ToInt32(stream.Length);
signMeaningImage = new Byte[size];
stream.Read(signMeaningImage, 0, size);
stream.Close();
最终解释权归:viki117
哎,我郁闷啊
xiaojing7 2008-04-05
  • 打赏
  • 举报
回复
最终解释权归:stg609.
shinaterry 2008-04-05
  • 打赏
  • 举报
回复
没有..
stg609 2008-04-05
  • 打赏
  • 举报
回复
看样子,序列化和反序列化深得人心呀.
自我感觉:
序列化和反序列化对于要求能"从数据->文件,并能从文件->数据"的情况能处理的很好.

大家还有其它方法的吗?
stg609 2008-04-05
  • 打赏
  • 举报
回复
17:13分了,差不多要去吃饭了,在这之前再来捧捧贴.嘿嘿

感谢netcsharp提供链接,你所提供的链接其实和Kshatriya提供的类似,都是关于序列化和反序列化的文章.

大概归纳下(本人愚见):
(1)我的问题并不就是序列化和反序列化的问题.应该说序列化和反序列化只是其中一种方法.

(2)duping9626 的方法和前面几种有点不同,主要是通过memorystrem将文件保存到内存中,然后得到从内在流中取出byte数组

另提几点意见:
(1)大家如果能赋上点说明注释,那我看起来就更方便了,嘿嘿.
(2)大家也可以谈谈几种用法之前的区别.

大家多多捧场哦!如果还有什么方法,尽管提出来.
duping9626 2008-04-05
  • 打赏
  • 举报
回复

Image img = Image.FromFile(@"e:\image.ico");
System.IO.MemoryStream ms = new System.IO.MemoryStream();
img.Save(ms, img.RawFormat);

byte bytes = ms.GetBuffer();
netcsharp 2008-04-05
  • 打赏
  • 举报
回复
你看下这篇文章对不对:http://www.netcsharp.cn/showtopic-318.aspx
stg609 2008-04-05
  • 打赏
  • 举报
回复
大概归纳下(本人愚见):
viki117 提供的代码是通过filestream的read方法将文件读到数组中

xray2005 在vikill7的基础上加上了BinaryFormatter和MemoryStream,最后返回一个数组.
但是为什么要再通过
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms,ic);
return ms.ToArray();
返回数组,而不是直接返回img呢?

另外很感谢Kshatriya提供的链接.

大家还有什么其它方法或什么的没?
yuanmanguo 2008-04-05
  • 打赏
  • 举报
回复
mark
xray2005 2008-04-05
  • 打赏
  • 举报
回复
public byte[] GetImageBytes(string strImageName)
{
string GetUrlPath = GetImages(strImageName);
ImageClass ic=new ImageClass();
FileStream fs = new FileStream(GetUrlPath, FileMode.Open, FileAccess.Read);
Byte[] img= new Byte[fs.Length];
try
{
fs.Read(img, 0, Convert.ToInt32(fs.Length));
}
catch(Exception ex)
{
Debug.WriteLine(ex.Message+ex.StackTrace);
}
fs.Close();
ic.myImage=img;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms,ic);
return ms.ToArray();
}

110,534

社区成员

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

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

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