直播电商平台开发,文件与二进制流间的转换

直播电商平台开发,文件与二进制流间的转换

 

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>}

以上就是直播电商平台开发,文件与二进制流间的转换, 更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示