zoukankan      html  css  js  c++  java
  • C# Image与Base64编码互转函数

     byte[] mybyte = null;
                    DataTable dt = OrderData.GetFP(txt.Text.Trim());
                    mybyte = (byte[])dt.Rows[0]["PDF_FILE"];
                    byte[] fileByte = Convert.FromBase64String(Convert.ToBase64String(mybyte));
                    Response.Clear();
                    Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}.pdf", txt.Text.Trim()));
                    Response.BinaryWrite(mybyte);
                    Response.Flush();
                    Response.End();

    base64介绍:

    Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,需要解码后才能阅读。

    public string FileToBase64(string filename)
            {
                string result = string.Empty;
                try
                {
                    using (FileStream fs = new FileStream(filename,FileMode.Open,FileAccess.Read))
                    {   //将图片转成64位形式的字符串
                        byte[] byteArray = new byte[fs.Length];
                        fs.Read(byteArray,0,byteArray.Length);
                        result = Convert.ToBase64String(byteArray);
                    }
                }
                catch
                {
                    result = "";
                }
                return result;
            }

    调用:

    static void Main(string[] args)
            {
                ImgAndBaseProject imgAndBase = new ImgAndBaseProject();
                System.Console.WriteLine(imgAndBase.FileToBase64(@"C:UsersMACHENIKEsource
    eposImgToBaseSixFourImgToBaseSixFourGitHub.png"));
            }

      如果把base64再转成图片 

           public Image Base64ToImg(string base64str)
            {
                byte[] arr = Convert.FromBase64String(base64str);//这个标黄的就与Image图片有关系了
                MemoryStream ms = new MemoryStream(arr);
                Bitmap bmp = new Bitmap(ms);
                return bmp;
            }

    完整代码如下:

        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            public string FileToBase64(string filename)
            {
                string result = string.Empty;
                try
                {
                    using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
                    {
                        byte[] byteArray = new byte[fs.Length];
                        fs.Read(byteArray, 0, byteArray.Length);
                        result = Convert.ToBase64String(byteArray);
                    }
                }
                catch
                {
                    result = "";
                }
                return result;
            }
            public Image Base64ToImg(string base64str)
            {
                byte[] arr = Convert.FromBase64String(base64str);
                MemoryStream ms = new MemoryStream(arr);
                Bitmap bmp = new Bitmap(ms);
                return bmp;
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    //先加载照片变成base64的字符串
    this.richTextBox1.Text = FileToBase64(@"C:UsersMACHENIKEsource eposImgToBaseSixFourImgToBaseSixFourGitHub.png").Trim(); } private void button1_Click(object sender, EventArgs e) { //把base64的转成图片 this.pictureBox1.Image = Base64ToImg(this.richTextBox1.Text.Trim()); } }

    Image和Base64互相转换

    
    

    转成 Base64 形式的 System.String:
    string a = "base64字符串与普通字符串互转";
    byte[] b = System.Text.Encoding.Default.GetBytes(a);
    //转成 Base64 形式的 System.String
    a = Convert.ToBase64String(b); //YmFzZTY019a3+7Su0+vG1c2o19a3+7Suu6XXqg==
    Response.Write(a);

    
    

    byte[] c = Convert.FromBase64String(a);
    a = System.Text.Encoding.Default.GetString(c); //base64字符串与普通字符串互转
    Response.Write(a);

    使用base64编码的好处

     
  • 相关阅读:
    寒假大数据学习笔记二
    寒假大数据学习笔记一
    关于简单的hive练习
    暑期第六周总结
    暑期第五周总结
    暑期第四周总结
    暑期第三周总结
    MYSQL进阶学习笔记六:MySQL视图的创建,理解及管理!(视频序号:进阶_14,15)
    MYSQL进阶学习笔记五:MySQL函数的创建!(视频序号:进阶_13)
    MYSQL进阶学习笔记四:MySQL存储过程之定义条件,处理过程及存储过程的管理!(视频序号:进阶_11,12)
  • 原文地址:https://www.cnblogs.com/ZkbFighting/p/12800663.html
Copyright © 2011-2022 走看看