C#中Base64字符串与Images相互转换

在项目中有时候图片是以Base64位格式存储在数据库中的,那么我们在不改变存储方式的情况下,要把图片显示出来就需要在代码中作一个转化,当然转化也非常简单,下面先把代码贴上来:

/// <summary>
        /// 把图片转化为base64字符串,传入图片路径
        /// </summary>
        /// <param name="Imagefilename"></param>
        /// <returns></returns>
        protected string ImgToBase64String(string Imagefilename)
        {
            try
            {
                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 Convert.ToBase64String(arr);
            }
            catch (Exception ex)
            {
                return null;
            }
        }
/// <summary>
        /// 把base64字符串转化为图片,传入base64字符串
        /// </summary>
        /// <param name="strbase64"></param>
        /// <returns></returns>
        protected Bitmap Base64StringToImage(string strbase64)
        {
            try
            {
                byte[] arr = Convert.FromBase64String(strbase64);
                MemoryStream ms = new MemoryStream(arr);
                Bitmap bmp = new Bitmap(ms);
                bmp.Save(@"d:\test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
                ms.Close();
                return bmp;
            }
            catch (Exception ex)
            {
                return null;
            }
        }

今天我遇到了另一种情况,就是需要在webform上直接把图片显示出来,那么我们知道Images控件是需要赋值Src路径才可以显示图片的,那么把base64转化完图片后再保存一下然后显示出来显然是不可取的,那么如何处理呢?其实很简单,一句话就解决了:
 

ASPxPortraitPic.ImageUrl = "data:image/png;base64," + userModel.BiopsyPath;

userModel.BiopsyPath就是Base64字符串,直接赋值给Images的ImageUrl属性就可以了。

THE END