当我尝试在c#中将base64string转换为Image时

时间:2017-06-29 15:56:39

标签: c# asp.net-web-api

当我尝试将base64string转换为C#中的Image时,我得到输出为" System.Drawing.Bitmap"而不是实际的图像:

Click for Image

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;
}

2 个答案:

答案 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();
    }
}

这是一个非常简单的例子,用于演示如何完成它。花些时间来检查并了解所做的工作,以便将其实施到您的特定场景中。