zoukankan      html  css  js  c++  java
  • 字节组数(二进制流)、Base64、图片(文件)、二进制相互之间转换

    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.IO;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using WebUI.ServiceReferenceUser;
    using System.Text;
    
    namespace WebUI.Controllers
    {
        public class DefaultController : Controller
        {
            // GET: Default
            public ActionResult Index()
            {
                return View();
            }
    
            #region 文件转二进制流(字节数组)
            /// <summary>
            /// 文件转二进制流(字节数组)
            /// </summary>
            /// <param name="strpath"></param>
            /// <returns></returns>
            public byte[] returnbyte(string strpath)
            {
             // 以二进制方式读文件
                FileStream fsMyfile = new FileStream(strpath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
            // 创建一个二进制数据流读入器,和打开的文件关联
                BinaryReader brMyfile = new BinaryReader(fsMyfile);
            // 把文件指针重新定位到文件的开始
                brMyfile.BaseStream.Seek(0, SeekOrigin.Begin);
               byte[] bytes = brMyfile.ReadBytes(Convert.ToInt32(fsMyfile.Length.ToString()));
            // 关闭以上new的各个对象
                brMyfile.Close();
               return bytes;
            }
            #endregion
    
            #region 图片转二进制流(字节数组)
            /// <summary>
            /// 图片转二进制流(字节数组)
            /// </summary>
            /// <param name="Imagefilename"></param>
            /// <returns></returns>
            private byte[] ImgToByte(string Imagefilename)
            {
                Bitmap bmp = new Bitmap(Imagefilename);
                MemoryStream ms = new MemoryStream();
                bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] arr = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(arr, 0, (int)ms.Length);
                ms.Close();
                return arr;
            }
            #endregion
    
            #region 二进制流转图片
            /// <summary>
            /// 二进制流转图片
            /// </summary>
            /// <param name="arr"></param>
            /// <param name="FileName"></param>
            private void ByteToImg(byte[] arr, string FileName)
            {
                MemoryStream ms = new MemoryStream(arr);
                Bitmap bmp = new Bitmap(ms);
                bmp.Save(FileName);
            }
            #endregion
    
            #region 图片转Base64字符串
            /// <summary>
            /// 图片转Base64字符串
            /// </summary>
            /// <param name="Imagefilename"></param>
            /// <returns></returns>
            private string ImgToBase64String(string Imagefilename)
            {
                Bitmap bmp = new Bitmap(Imagefilename);
                MemoryStream ms = new MemoryStream();
                bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] arr = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(arr, 0, (int)ms.Length);
                ms.Close();
                String strbaser64 = Convert.ToBase64String(arr);
                return strbaser64;
            }
            #endregion
    
            #region Base64字符串转图片
            /// <summary>
            /// Base64字符串转图片
            /// </summary>
            /// <param name="Base64Str"></param>
            /// <param name="FileName"></param>
            private void Base64StringToImg(string Base64Str, string FileName)
            {
                MemoryStream ms = new MemoryStream(Convert.FromBase64String(Base64Str));
                Bitmap bmp = new Bitmap(ms);
                bmp.Save(FileName);
            }
            #endregion
    
            #region Base64和字节数组互转
            /// <summary>
            /// Base64转字节数组
            /// </summary>
            /// <param name="Base64Str"></param>
            /// <returns></returns>
            private byte[] Base64StringToByte(string Base64Str)
            {
                return Convert.FromBase64String(Base64Str);
            }
    
            /// <summary>
            /// 字节数组转Base64
            /// </summary>
            /// <param name="arr"></param>
            /// <returns></returns>
            private string ByteToBase64String(byte[] arr)
            {
                return Convert.ToBase64String(arr);
            }
            #endregion
    
            #region 字节流与二进制互转
            /// <summary>
            /// 字节流与二进制互转
            /// </summary>
            public void ByteToBit()
            {
                var bytearr = ImgToByte(Server.MapPath("/images/teacher.jpg"));
                StringBuilder str = new StringBuilder();
    
                foreach (var p in bytearr)
                {
                    str.AppendFormat("{0},", Convert.ToString(p, 2));
                }
    
                var imgstr = str.ToString().Trim(',');
    
                FileHelper.WriteText(Server.MapPath("/bit.txt"), imgstr);
    
                var arr = FileHelper.FileToString(Server.MapPath("/bit.txt")).Split(',');
                var imgarr = Array.ConvertAll<string, byte>(arr, m => Convert.ToByte(m, 2));
            }
            #endregion
    
            /// <summary>
            /// 测试输出图片
            /// </summary>
            /// <param name="fileName"></param>
            /// <returns></returns>
            public ActionResult Pic(string fileName)
            {            
                return File(Base64StringToByte(FileHelper.FileToString(fileName)), @"image/jpeg");
            }
        }
    }
  • 相关阅读:
    【2019.7.26 NOIP模拟赛 T1】数字查找(figure)(数学)
    【2019.7.25 NOIP模拟赛 T1】变换(change)(思维+大分类讨论)
    简析平衡树(四)——FHQ Treap
    【BZOJ3529】[SDOI2014] 数表(莫比乌斯反演)
    【洛谷1829】 [国家集训队] Crash的数字表格(重拾莫比乌斯反演)
    【PE512】Sums of totients of powers(欧拉函数)
    【CFGym102059G】Fascination Street(思维DP)
    【CF438D】The Child and Sequence(线段树)
    【2019.7.16 NOIP模拟赛 T2】折叠(fold)(动态规划)
    【UVA1303】Wall(凸包)
  • 原文地址:https://www.cnblogs.com/superfeeling/p/11556627.html
Copyright © 2011-2022 走看看