圖片和Base64字符串互轉


圖片URL轉成Base64字符串

/// <summary>
        /// 通過Url獲取到Image格式的文件
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static Image UrlToImage(string url)
        {
            WebClient mywebclient = new WebClient();
            byte[] Bytes = mywebclient.DownloadData(url);
            using (MemoryStream ms = new MemoryStream(Bytes))
            {
                Image outputImg = Image.FromStream(ms);
                return outputImg;
            }
        }
        /// <summary>
        /// 再將Iamge文件轉為Base64字符串
        /// </summary>
        /// <param name="img"></param>
        /// <returns></returns>
        public static string BitmapToBase64(Image img)
        {
            System.Drawing.Bitmap bitMap = new System.Drawing.Bitmap(img);
            string imgBase64 = string.Empty;
            using (MemoryStream memoryStream = new MemoryStream())
            {
                bitMap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] buffer = new byte[memoryStream.Length];
                memoryStream.Position = 0;
                memoryStream.Read(buffer, 0, (int)memoryStream.Length);
                memoryStream.Close();
                imgBase64 = Convert.ToBase64String(buffer);
            }
            return imgBase64;
        }

  Base64字符串轉成圖片並保存

/// <summary>
        /// 將Base64String轉為圖片並保存
        /// </summary>
        /// <param name="imgBase64"></param>
        public static void Base64ToImage(string imgBase64)
        {
            string format;
            string imgPath = Directory.GetCurrentDirectory() + "\\" + DateTime.Now.ToString("yyyyMMddHHmmss");
            byte[] buffer = Convert.FromBase64String(imgBase64);
            using (MemoryStream memoryStream = new MemoryStream(buffer))
            {
                System.Drawing.Bitmap bitMap = new System.Drawing.Bitmap(memoryStream);
                System.Drawing.Imaging.ImageFormat imgFormat = GetImageFormat(memoryStream, out format);
                imgPath = imgPath + format;
                bitMap.Save(imgPath, imgFormat);
                bitMap.Dispose();
            }
        }
        /// <summary>
        /// 獲取Image圖片格式
        /// </summary>
        /// <param name="file"></param>
        /// <param name="format"></param>
        /// <returns></returns>
        private static System.Drawing.Imaging.ImageFormat GetImageFormat(MemoryStream file, out string format)
        {
            byte[] sb = new byte[2];  //這次讀取的就是直接0-1的位置長度了.
            file.Read(sb, 0, sb.Length);
            //根據文件頭判斷
            string strFlag = sb[0].ToString() + sb[1].ToString();
            //察看格式類型
            switch (strFlag)
            {
                //JPG格式
                case "255216":
                    format = ".jpg";
                    return System.Drawing.Imaging.ImageFormat.Jpeg;
                //GIF格式
                case "7173":
                    format = ".gif";
                    return System.Drawing.Imaging.ImageFormat.Gif;
                //BMP格式
                case "6677":
                    format = ".bmp";
                    return System.Drawing.Imaging.ImageFormat.Bmp;
                //PNG格式
                case "13780":
                    format = ".png";
                    return System.Drawing.Imaging.ImageFormat.Png;
                //其他格式
                default:
                    format = ".jpg";
                    return System.Drawing.Imaging.ImageFormat.Jpeg;
            }
        } 

  調用

 static void Main(string[] args)
        {
            //string imgUrl = "D:\\c29e09b0-e5f4-43fa-9ded-8f9865a2e8d4.jpg";
            //string imgUrl = "https://www.baidu.com/img/superlogo_c4d7df0a003d3db9b65e9ef0fe6da1ec.png";
            string imgUrl = "http://file02.16sucai.com/d/file/2015/0408/779334da99e40adb587d0ba715eca102.jpg";//圖片可以是本地磁盤地址、可以是http和https地址
            Image img = UrlToImage(imgUrl);//轉成Image格式
            string imgBase64 = BitmapToBase64(img); //注意:生成的Base64字符串加上  data:image/jpeg;base64,  可以在前端識別
            Base64ToImage( imgBase64);//生成圖片並保存
          
            Console.ReadKey();
        }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM