ImageとBase 64 Stringの相互変換

6454 ワード

     public Image Base64ToImage(string base64String)
        {
            // Convert Base64 String to byte[]
            byte[] imageBytes = Convert.FromBase64String(base64String);
            MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);

            // Convert byte[] to Image
            ms.Write(imageBytes, 0, imageBytes.Length);
            Image image = Image.FromStream(ms, true);
            return image;
        }


        public string CreateImgToBase64(string imagePath)
        {
            Bitmap bmp = (Bitmap)Image.FromFile(imagePath);
            MemoryStream stream = new MemoryStream();
            bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
            stream.Position = 0;
            byte[] data = new byte[stream.Length];
            stream.Read(data, 0, (int)stream.Length);
            stream.Close();

            string base64String = string.Empty;
            try
            {
                base64String = System.Convert.ToBase64String(data, 0, data.Length);
            }
            catch
            {
                throw;
            }

            StreamWriter outFile;

            try
            {
                outFile = new StreamWriter(string.Concat(imagePath, ".txt"), false, Encoding.ASCII);
                outFile.Write(base64String);
                outFile.Close();

                return base64String;
            }
            catch
            {
                throw;
            }

            bmp.Dispose();
        }

        public void CreateBase64StrToImage(string filePath)
        {
            StreamReader reader = new StreamReader(filePath);
            string str = reader.ReadToEnd();

            byte[] bitmapData = new byte[str.Length];
            bitmapData = Convert.FromBase64String(FixBase64ForImage(str));
            MemoryStream streamBitmap = new MemoryStream(bitmapData);

            Bitmap bitImage = new Bitmap((Bitmap)Image.FromStream(streamBitmap));
            bitImage.Save(filePath.Substring(0, filePath.Length - 4), System.Drawing.Imaging.ImageFormat.Jpeg);
            bitImage.Dispose();
        }

        static string FixBase64ForImage(string image)
        {
            StringBuilder sbText =
                new StringBuilder(image, image.Length);

            sbText.Replace("\r
", string.Empty); sbText.Replace(" ", string.Empty); return sbText.ToString(); }