Base64编码的字符串与图片的转换 C#

using System;   
using System.Collections.Generic;   
using System.ComponentModel;   
using System.Data;   
using System.Drawing;   
using System.Text;   
using System.Windows.Forms;   
using System.IO;   
using System.Drawing.Imaging;   
  
namespace base64_img   
{   
    public partial class Form1 : Form   
    {   
        public Form1()   
        {   
            InitializeComponent();   
        }   
  
        //图片 转为    base64编码的文本   
        private void button1_Click(object sender, EventArgs e)   
        {   
            OpenFileDialog dlg = new OpenFileDialog();   
            dlg.Title = "选择要转换的图片";   
            dlg.Filter = "Image files (*.jpg;*.bmp;*.gif)|*.jpg*.jpeg;*.gif;*.bmp|AllFiles (*.*)|*.*";   
            if (DialogResult.OK == dlg.ShowDialog())   
            {   
                ImgToBase64String(dlg.FileName);   
            }   
        }   
        //图片 转为    base64编码的文本   
        private void ImgToBase64String(string Imagefilename)   
        {   
            try  
            {   
                Bitmap bmp = new Bitmap(Imagefilename);   
                this.pictureBox1.Image = bmp;   
                FileStream fs = new FileStream(Imagefilename + ".txt", FileMode.Create);   
                StreamWriter sw = new StreamWriter(fs);   
  
                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);   
                sw.Write(strbaser64);   
  
                sw.Close();   
                fs.Close();   
                MessageBox.Show("转换成功!");   
            }   
            catch (Exception ex)   
            {   
                MessageBox.Show("ImgToBase64String 转换失败/nException:" + ex.Message);   
            }   
        }   
  
        //base64编码的文本 转为    图片   
        private void button2_Click(object sender, EventArgs e)   
        {   
            OpenFileDialog dlg = new OpenFileDialog();   
            dlg.Title = "选择要转换的base64编码的文本";   
            dlg.Filter = "txt files|*.txt";   
            if (DialogResult.OK == dlg.ShowDialog())   
            {   
                Base64StringToImage(dlg.FileName);   
            }   
        }   
        //base64编码的文本 转为    图片   
        private void Base64StringToImage(string txtFileName)   
        {   
            try  
            {   
                FileStream ifs = new FileStream(txtFileName, FileMode.Open, FileAccess.Read);   
                StreamReader sr = new StreamReader(ifs);   
  
                String inputStr = sr.ReadToEnd();   
                byte[] arr = Convert.FromBase64String(inputStr);   
                MemoryStream ms = new MemoryStream(arr);   
                Bitmap bmp = new Bitmap(ms);   
  
                bmp.Save(txtFileName + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);   
                //bmp.Save(txtFileName + ".bmp", ImageFormat.Bmp);   
                //bmp.Save(txtFileName + ".gif", ImageFormat.Gif);   
                //bmp.Save(txtFileName + ".png", ImageFormat.Png);   
                ms.Close();   
                sr.Close();   
                ifs.Close();   
                this.pictureBox1.Image = bmp;   
                MessageBox.Show("转换成功!");   
            }   
            catch (Exception ex)   
            {   
                MessageBox.Show("Base64StringToImage 转换失败/nException:"+ex.Message);   
            }   
        }   
    }   
}  

  

posted @ 2013-06-14 16:45  冰封的心  阅读(173)  评论(0)    收藏  举报