C#Base64string到JPEG图像
我正在尝试将Base64String转换为需要在本地保存的图像。
目前,我的代码能够保存图像,但是当我打开保存的图像,它说“无效的图像”。
码:
try { using (var imageFile = new StreamWriter(filePath)) { imageFile.Write(resizeImage.Content); imageFile.Close(); } }
Content
是一个包含Base64string的string
对象。
所以用你提供的代码。
var bytes = Convert.FromBase64String(resizeImage.Content); using (var imageFile = new FileStream(filePath, FileMode.Create)) { imageFile.Write(bytes ,0, bytes.Length); imageFile.Flush(); }
首先,将base 64string转换为Image
,然后使用Image.Save
方法。
从基本64string转换为Image
:
public Image Base64ToImage(string base64String) { // Convert base 64 string to byte[] byte[] imageBytes = Convert.FromBase64String(base64String); // Convert byte[] to Image using (var ms = new MemoryStream(imageBytes, 0, imageBytes.Length)) { Image image = Image.FromStream(ms, true); return image; } }
从Image
转换为基数64string:
public string ImageToBase64(Image image,System.Drawing.Imaging.ImageFormat format) { using (MemoryStream ms = new MemoryStream()) { // Convert Image to byte[] image.Save(ms, format); byte[] imageBytes = ms.ToArray(); // Convert byte[] to base 64 string string base64String = Convert.ToBase64String(imageBytes); return base64String; } }
最后,你可以方便地调用Image.Save(filePath);
保存图像。
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; }
面前 :
<Image Name="camImage"/>
背部:
public async void Base64ToImage(string base64String) { // read stream var bytes = Convert.FromBase64String(base64String); var image = bytes.AsBuffer().AsStream().AsRandomAccessStream(); // decode image var decoder = await BitmapDecoder.CreateAsync(image); image.Seek(0); // create bitmap var output = new WriteableBitmap((int)decoder.PixelHeight, (int)decoder.PixelWidth); await output.SetSourceAsync(image); camImage.Source = output; }