当我尝试将base64string转换为C#中的Image时,我得到输出为" System.Drawing.Bitmap"而不是实际的图像:
public Image DownFile(string base64String)//string file
{
//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);
image.Save("E:/Project Utilitie Connection/FileDownloadTask/Images", System.Drawing.Imaging.ImageFormat.Jpeg);
return image;
}
答案 0 :(得分:0)
尝试使用MemoryStream的using语句,如下所示:
byte[] bytes = Convert.FromBase64String(base64String);
Image image;
using (MemoryStream ms = new MemoryStream(bytes))
{
image = Image.FromStream(ms);
}
return image;
答案 1 :(得分:0)
框架正在将Image
对象转换为字符串,这就是您看到System.Drawig.Bitmap
创建一个响应,从转换后的base64字符串中获取字节,然后设置响应的内容类型,以便客户端知道如何呈现内容。
public class ValuesController : ApiController {
[HttpGet]
public IHttpActionResult DownFile(string base64String) {
if (!string.IsNullOrWhiteSpace(base64String)) {
byte[] imageBytes = Convert.FromBase64String(base64String);
var response = Request.CreateResponse(HttpStatusCode.OK);
response.Content = new ByteArrayContent(imageBytes);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpg");
return ResponseMessage(response);
}
return BadRequest();
}
}
这是一个非常简单的例子,用于演示如何完成它。花些时间来检查并了解所做的工作,以便将其实施到您的特定场景中。