将基本64string转换为图像并保存

这是我的代码:

protected void SaveMyImage_Click(object sender, EventArgs e) { string imageUrl = Hidden1.Value; string saveLocation = Server.MapPath("~/PictureUploads/whatever2.png") ; HttpWebRequest imageRequest = (HttpWebRequest)WebRequest.Create(imageUrl); WebResponse imageResponse = imageRequest.GetResponse(); Stream responseStream = imageResponse.GetResponseStream(); using (BinaryReader br = new BinaryReader(responseStream)) { imageBytes = br.ReadBytes(500000); br.Close(); } responseStream.Close(); imageResponse.Close(); FileStream fs = new FileStream(saveLocation, FileMode.Create); BinaryWriter bw = new BinaryWriter(fs); try { bw.Write(imageBytes); } finally { fs.Close(); bw.Close(); } } } 

顶部imageUrl声明是在一个Base64的图像string,我想把它转换成一个图像。 我认为我的代码集只适用于像“www.mysite.com/test.jpg”这样的图像,而不适用于Base64string。 任何人有一些build议? 谢谢!

下面是一个例子,你可以修改接受一个string参数的方法。 然后用.Save()保存图像对象。

 public Image LoadImage() { //data:image/gif;base64, //this image is a single pixel (black) byte[] bytes = Convert.FromBase64String("R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw=="); Image image; using (MemoryStream ms = new MemoryStream(bytes)) { image = Image.FromStream(ms); } return image; } 

这是我最后的结局。

  private void SaveByteArrayAsImage(string fullOutputPath, string base64String) { byte[] bytes = Convert.FromBase64String(base64String); Image image; using (MemoryStream ms = new MemoryStream(bytes)) { image = Image.FromStream(ms); } image.Save(fullOutputPath, System.Drawing.Imaging.ImageFormat.Png); } 

您可以将Base64直接保存到文件中:

 string filePath = "MyImage.jpg"; File.WriteAllBytes(filePath, Convert.FromBase64String(base64imageString)); 

我会build议通过位图:

 public void SaveImage(string base64) { using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(base64))) { using (Bitmap bm2 = new Bitmap(ms)) { bm2.Save("SavingPath" + "ImageName.jpg"); } } } 

在类似的情况下,我的工作如下:

 byte[] bytes = Convert.FromBase64String(Base64String); ImageTagId.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(bytes); 

ImageTagId是ASP图像标签的ID。

在我的情况下,它只适用于两行代码。 testing下面的C#代码:

 String dirPath = "C:\myfolder\"; String imgName = "my_mage_name.bmp"; byte[] imgByteArray = Convert.FromBase64String("your_base64_string"); File.WriteAllBytes(dirPath + imgName, imgByteArray); 

而已。 如果你真的觉得这个解决scheme适合你,请投票。 提前致谢。

如果你有一串Base64编码的二进制数据,你应该可以做到以下几点:

 byte[] encodedDataAsBytes = System.Convert.FromBase64String(encodedData); 

您应该能够将结果数组写入文件。

这里是工作代码转换图像从一个base64string到一个Image对象,并将其存储在一个具有唯一文件名的文件夹中:

 public void SaveImage() { string strm = "R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"; //this is a simple white background image var myfilename= string.Format(@"{0}", Guid.NewGuid()); //Generate unique filename string filepath= "~/UserImages/" + myfilename+ ".jpeg"; var bytess = Convert.FromBase64String(strm); using (var imageFile = new FileStream(filepath, FileMode.Create)) { imageFile.Write(bytess, 0, bytess.Length); imageFile.Flush(); } }