直播电商平台开发,文件与二进制流间的转换
直播电商平台开发,文件与二进制流间的转换
1 | using System;<br>using System.Collections.Generic;<br>using System.Drawing;<br>using System.Drawing.Imaging;<br>using System.IO;<br>using System.Linq;<br>using System.Runtime.Serialization;<br>using System.Runtime.Serialization.Formatters.Binary;<br>using System.Text;<br>using System.Threading.Tasks;<br> <br> namespace InfoPublish.Model.Tools<br>{<br> /// <summary><br> /// 工具类:二进制与byte数组互相转换<br> /// </summary><br> public class ByteConvertHelper<br> {<br> /// <summary><br> /// 将对象转换为byte数组<br> /// </summary><br> /// <param name="obj">被转换对象</param><br> /// <returns>转换后byte数组</returns><br> public static byte[] Object2Bytes(object obj)<br> {<br> byte[] buff;<br> using (MemoryStream ms = new MemoryStream())<br> {<br> IFormatter iFormatter = new BinaryFormatter();<br> iFormatter.Serialize(ms, obj);<br> buff = ms.GetBuffer();<br> }<br> return buff;<br> }<br> <br> /// <summary><br> /// 将byte数组转换成对象<br> /// </summary><br> /// <param name="buff">被转换byte数组</param><br> /// <returns>转换完成后的对象</returns><br> public static object Bytes2Object(byte[] buff)<br> {<br> object obj;<br> using (MemoryStream ms = new MemoryStream(buff))<br> {<br> IFormatter iFormatter = new BinaryFormatter();<br> obj = iFormatter.Deserialize(ms);<br> }<br> return obj;<br> }<br> <br> /// <summary><br> /// 从byte数组创建Image<br> /// </summary><br> public static Image Bytes2Image(byte[] bytes)<br> {<br> System.IO.MemoryStream stream = new System.IO.MemoryStream();<br> stream.Write(bytes, 0, bytes.Length);<br> Image image = Image.FromStream(stream);<br> <br> return image;<br> }<br> <br> /// <summary><br> /// 将Image转化为byte数组,使用缓存文件中转<br> /// </summary><br> public static byte[] Image2Bytes_tmpFile(Image image, ImageFormat imageFormat = null)<br> {<br> if (imageFormat == null) imageFormat = ImageFormat.Jpeg;<br> String tmpFilePath = AppDomain.CurrentDomain.BaseDirectory + DateTime.Now.Ticks + ".stream";<br> image.Save(tmpFilePath, imageFormat); // 保存图像到文件<br> <br> byte[] bytes = FileBinaryConvertHelper.File2Bytes(tmpFilePath); // 从文件中获取字节数组<br> if (File.Exists(tmpFilePath)) File.Delete(tmpFilePath); //删除文件<br> <br> return bytes;<br> }<br> <br> <br> //private static System.Windows.Controls.Image Bitmap2Image(System.Drawing.Bitmap Bi)<br> //{<br> // MemoryStream ms = new MemoryStream();<br> // Bi.Save(ms, System.Drawing.Imaging.ImageFormat.Png);<br> // BitmapImage bImage = new BitmapImage();<br> // bImage.BeginInit();<br> // bImage.StreamSource = new MemoryStream(ms.ToArray());<br> // bImage.EndInit();<br> // ms.Dispose();<br> // Bi.Dispose();<br> // System.Windows.Controls.Image i = new System.Windows.Controls.Image();<br> // i.Source = bImage;<br> // return i;<br> //}<br> <br> <br> //byte[] 转换 Bitmap<br> public static Bitmap BytesToBitmap(byte[] Bytes)<br> {<br> MemoryStream stream = null;<br> try<br> {<br> stream = new MemoryStream(Bytes);<br> return new Bitmap((Image)new Bitmap(stream));<br> }<br> catch (ArgumentNullException ex)<br> {<br> throw ex;<br> }<br> catch (ArgumentException ex)<br> {<br> throw ex;<br> }<br> finally<br> {<br> stream.Close();<br> }<br> }<br> <br> //Bitmap转byte[] <br> public static byte[] BitmapToBytes(Bitmap Bitmap)<br> {<br> MemoryStream ms = null;<br> try<br> {<br> ms = new MemoryStream();<br> Bitmap.Save(ms, Bitmap.RawFormat);<br> byte[] byteImage = new Byte[ms.Length];<br> byteImage = ms.ToArray();<br> return byteImage;<br> }<br> catch (ArgumentNullException ex)<br> {<br> throw ex;<br> }<br> finally<br> {<br> ms.Close();<br> }<br> }<br> }<br> <br> /// <summary><br> /// 工具类:文件与二进制流间的转换<br> /// </summary><br> public class FileBinaryConvertHelper<br> {<br> /// <summary><br> /// 将文件转换为byte数组<br> /// </summary><br> /// <param name="path">文件地址</param><br> /// <returns>转换后的byte数组</returns><br> public static byte[] File2Bytes(string path)<br> {<br> if (!File.Exists(path))<br> {<br> return new byte[0];<br> }<br> <br> FileInfo fi = new FileInfo(path);<br> byte[] buff = new byte[fi.Length];<br> <br> FileStream fs = fi.OpenRead();<br> fs.Read(buff, 0, Convert.ToInt32(fs.Length));<br> fs.Close();<br> <br> return buff;<br> }<br> <br> /// <summary><br> /// 将byte数组转换为文件并保存到指定地址<br> /// </summary><br> /// <param name="buff">byte数组</param><br> /// <param name="savepath">保存地址</param><br> public static void Bytes2File(byte[] buff, string savepath)<br> {<br> if (File.Exists(savepath))<br> {<br> File.Delete(savepath);<br> }<br> <br> FileStream fs = new FileStream(savepath, FileMode.CreateNew);<br> BinaryWriter bw = new BinaryWriter(fs);<br> bw.Write(buff, 0, buff.Length);<br> bw.Close();<br> fs.Close();<br> }<br> }<br>} |
以上就是直播电商平台开发,文件与二进制流间的转换, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现