楼主有一个需要用户用的网站要上传图片,图片不保存到网站,而是要专门存放到一个图片服务器上面,于是需要通过byte的形式来传输
之前写的一个本地图片流转于byte互转 后来发现通过网络路径获取的图片这个方法就用不了 后来百度了 换了一个新的写法
图片流转成byte数组
1 public byte[] SaveImage(Image image) 2 { 3 MemoryStream ms = new MemoryStream(); 4 BinaryFormatter bf = new BinaryFormatter(); 5 bf.Serialize(ms, (object)image); 6 ms.Close(); 7 return ms.ToArray(); 8 }
然后byte转成图片流并且保存
1 //保存图片 2 var path = "\Upload\LINGDAO\" + DateTime.Now.Date.ToString("yyyy-MM-dd") + "\"; 3 var serverPath = Server.MapPath("~" + path);//图片路径 4 if (!Directory.Exists(serverPath)) 5 { 6 Directory.CreateDirectory(serverPath);//创建文件夹 7 } 8 string fileName = Guid.NewGuid().ToString() + ".jpeg"; 9 10 //图片流存储为图片文件 11 MemoryStream ms = new MemoryStream(data, 0, data.Length); 12 BinaryFormatter bf = new BinaryFormatter(); 13 object obj = bf.Deserialize(ms); 14 ms.Close(); 15 var img=(Image)obj; 16 img.Save(serverPath + fileName, ImageFormat.Jpeg);
需要注意的是在传送个接收的这个byte的数组的时候 要转换的流格式一致才能互转成功 否则就转换出来的东西可以打不开或者无效