c#中字节数组byte[]、图片image、流stream,字符串string、内存流MemoryStream、文件file,之间的转换
1 c#中字节数组byte[]、图片image、流stream,字符串string、内存流MemoryStream、文件file,之间的转换
2
3 /*********字节数组byte[]与图片image之间的转化**********/
4 //字节数组转换成图片
5 public static Image byte2img(byte[] buffer)
6 {
7 MemoryStream ms = new MemoryStream(buffer);
8 ms.Position = 0;
9 Image img = Image.FromStream(ms);
10 ms.Close();
11 return img;
12 }
13
14
15 //图片转化为字节数组
16 public static byte[] byte2img(Bitmap Bit)
17 {
18 byte[] back = null;
19 MemoryStream ms = new MemoryStream();
20 Bit.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
21 back = ms.GetBuffer();
22 return back;
23 }
24
25
26 /**********字节数组byte[]与字符串string之间的编码解码*****/
27 //字符串到字节数组的编码
28 public static byte[] str2byte(string str)
29 {
30 byte[] data = System.Text.Encoding.UTF8.GetBytes(param);
31 //byte[] data = Convert.FromBase64String(param);
32 //有很多种编码方式,可参考:http://blog.csdn.net/luanpeng825485697/article/details/77622243
33 return data;
34 }
35
36
37 //字节数组到字符串的解码
38 public static string str2byte(byte[] data)
39 {
40 string str = System.Text.Encoding.UTF8.GetString(data);
41 //str = Convert.ToBase64String(data);
42 //有很多种编码方式,可参考:http://blog.csdn.net/luanpeng825485697/article/details/77622243
43 return str;
44 }
45
46 /****字节数组byte[]与内存流MemoryStream之间的转换****/
47 //字节数组转化为输入内存流
48 public static MemoryStream byte2stream(byte[] data)
49 {
50 MemoryStream inputStream = new MemoryStream(data);
51 return inputStream;
52 }
53
54
55 //输出内存流转化为字节数组
56 public static byte[] byte2stream(MemoryStream outStream)
57 {
58 return outStream.ToArray();
59 }
60
61 /************字节数组byte[]与流stream之间的转换********/
62 //将 Stream 转成 byte[]
63 public byte[] stream2byte(Stream stream)
64 {
65 byte[] bytes = new byte[stream.Length];
66 stream.Read(bytes, 0, bytes.Length);
67 // 设置当前流的位置为流的开始
68 stream.Seek(0, SeekOrigin.Begin);
69 return bytes;
70 }
71
72
73 //将 byte[] 转成 Stream
74 public Stream byte2stream(byte[] bytes)
75 {
76 Stream stream = new MemoryStream(bytes);
77 return stream;
78 }
79
80 流Stream 和 文件file之间的转换
81
82 //将 Stream 写入文件
83 public void stream2file(Stream stream,string fileName)
84 {
85 // 把 Stream 转换成 byte[]
86 byte[] bytes = new byte[stream.Length];
87 stream.Read(bytes, 0, bytes.Length);
88 // 设置当前流的位置为流的开始
89 stream.Seek(0, SeekOrigin.Begin);
90 // 把 byte[] 写入文件
91 FileStream fs = new FileStream(fileName, FileMode.Create);
92 BinaryWriter bw = new BinaryWriter(fs);
93 bw.Write(bytes);
94 bw.Close();
95 fs.Close();
96 }
97
98
99 //从文件读取 Stream
100 public Stream file2stream(string fileName)
101 {
102 // 打开文件
103 FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);
104 // 读取文件的 byte[]
105 byte[] bytes = new byte[fileStream.Length];
106 fileStream.Read(bytes, 0, bytes.Length);
107 fileStream.Close();
108 // 把 byte[] 转换成 Stream
109 Stream stream = new MemoryStream(bytes);
110 return stream;
111 }