C#中圖片與BASE64碼互相轉換

來源:互聯網
上載者:User

1.圖錶轉換成BASE64碼

        private string buffer1;
        private string buffer2;

       //讀取檔案...

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openDlg = new OpenFileDialog();
          openDlg.Filter = "圖形檔案(*.txt)|*.gif";
           openDlg.FileName ="";
            openDlg.DefaultExt = ".gif";
            openDlg.CheckFileExists = true;
            openDlg.CheckPathExists = true;
   
            DialogResult res = openDlg.ShowDialog();
            if (res == DialogResult.OK)
            {
                for (int i = 0; i < openDlg.FileNames.Length; i++)
                {
                    buffer1 = openDlg.FileNames[i].ToString();
                }
                button2.Enabled = true;
            }
        }

       //開始轉換...

        public void EncodeWithString()
        {
            System.IO.FileStream inFile;
            byte[] binaryData;
            try
            {
                inFile = new System.IO.FileStream(buffer1,System.IO.FileMode.Open,System.IO.FileAccess.Read);
                binaryData = new Byte[inFile.Length];
                long bytesRead = inFile.Read(binaryData, 0,(int)inFile.Length);
                inFile.Close();
            }
            catch (System.Exception exp)
            {
                System.Console.WriteLine("{0}", exp.Message);
                return;
            }
            try
            {
                buffer2 = System.Convert.ToBase64String(binaryData,0,binaryData.Length);
            }
            catch (System.ArgumentNullException)
            {
                System.Console.WriteLine("Binary data array is null.");
                return;
            }
            System.IO.StreamWriter outFile;
            try
            {
                outFile = new System.IO.StreamWriter(buffer1,false,System.Text.Encoding.ASCII);
                outFile.Write(buffer2);
                outFile.Close();
            }
            catch (System.Exception exp)
            {
                System.Console.WriteLine("{0}", exp.Message);
            }
        }

       //轉換並儲存檔案

        private void button2_Click(object sender, EventArgs e)
        {

            EncodeWithString();
            SaveFileDialog saveDlg = new SaveFileDialog();
            saveDlg.Filter = "文字檔(*.txt)|*.txt";
            saveDlg.DefaultExt = ".txt";
           saveDlg.FileName = "";
           DialogResult res = saveDlg.ShowDialog();
            if (res == DialogResult.OK)
            {
                    System.IO.FileStream s = new System.IO.FileStream (saveDlg.FileName, System.IO.FileMode.Create, System.IO.FileAccess.Write);
                    System.IO.StreamWriter w = new System.IO.StreamWriter(s);
      w.WriteLine(buffer2);
      w.Close();
      s.Close();
                    MessageBox.Show("轉換成功!");
                    buffer1 = "";
                    buffer2 = "";
            }
        }

2.BASE64碼轉換成圖片

        private string buffer1;
        private string buffer2;
        private string buffer3;

       //讀取檔案...

               private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openDlg = new OpenFileDialog();
    openDlg.Filter = "文字檔(*.txt)|*.txt";
    openDlg.FileName ="";
    openDlg.DefaultExt = ".txt";
    openDlg.CheckFileExists = true;
    openDlg.CheckPathExists = true;
   
    DialogResult res = openDlg.ShowDialog();
            if (res == DialogResult.OK)
            {
                for (int i = 0; i < openDlg.FileNames.Length; i++)
                {
                    buffer1 = openDlg.FileNames[i].ToString();
                    System.IO.StreamReader srRead;
                    srRead = new System.IO.StreamReader((System.IO.Stream)System.IO.File.OpenRead(openDlg.FileName), System.Text.Encoding.Default);
                    srRead.BaseStream.Seek(0, System.IO.SeekOrigin.Begin);
                    while (srRead.Peek() > -1)
                    {
                        buffer2 += srRead.ReadLine();
                    }
                    srRead.Close();
                }
            }
        }

       //開始轉換...

        public void DecodeWithString()
        {
            System.IO.StreamReader inFile;
            string base64String;
            try
            {
                char[] base64CharArray;
                inFile = new System.IO.StreamReader(buffer1,System.Text.Encoding.ASCII);
                base64CharArray = new char[inFile.BaseStream.Length];
                inFile.Read(base64CharArray, 0, (int)inFile.BaseStream.Length);
                base64String = new string(base64CharArray);
            }
            catch (System.Exception exp)
            {
                System.Console.WriteLine("{0}", exp.Message);
                return;
            }
            try
            {
                binaryData = System.Convert.FromBase64String(base64String);
            }
            catch (System.ArgumentNullException)
            {
                System.Console.WriteLine("Base 64 string is null.");
                return;
            }
            catch (System.FormatException)
            {
                System.Console.WriteLine("Base 64 string length is not " +"4 or is not an even multiple of 4.");
                return;
            }
            try
            {
                System.IO.FileStream outFile;
                outFile = new System.IO.FileStream(buffer3,System.IO.FileMode.Create,System.IO.FileAccess.Write);
                outFile.Write(binaryData, 0, binaryData.Length);
                outFile.Close();
            }
            catch (System.Exception exp)
            {
                System.Console.WriteLine("{0}", exp.Message);
            }
        }

       //轉換並儲存檔案

        private void button2_Click(object sender, EventArgs e)
        {

            DecodeWithString();
            SaveFileDialog saveDlg = new SaveFileDialog();
            saveDlg.Filter = "圖形檔案(*.gif)|*.gif";
            saveDlg.DefaultExt = ".gif";
           saveDlg.FileName = "";
            DialogResult res = saveDlg.ShowDialog();
            if (res == DialogResult.OK)
            {
                    buffer3 = saveDlg.FileName;
                    //panel1.BackgroundImage = Image.FromStream(binaryData);
            }
        }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.