javascript - 将响应转换为新图像

标签 javascript angular

有没有办法将 HTTP Get 响应转换为 Image() 对象?

目前我使用:

backImage = new Image()
backImage.src = "http://www.example.com/someimage.jpg";

我想使用我的 Web api(提供 HttpResponseMessage):

public HttpResponseMessage GetImage(Guid id)
        {
           // my logic and image extraction
           var file = new FileInfo("path-to-my-image");
           var fileStream = file.OpenRead();
           var response = new HttpResponseMessage { Content = new StreamContent(fileStream) };
                response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpg");
                response.Content.Headers.ContentLength = file.Length;
                return response;
            }

我目前通过它调用

this.http.get("http://www.example.com/api/GetImage/"+id);

当我在 Postman 中测试它时,我返回响应并渲染图像。

我试图找出是否可以转换该响应并将其存储在 Image() 对象中,如示例所示。

最佳答案

您可以返回图像的 base64 值:

var returnString = "data:image/jpg;base64,"+Convert.ToBase64String(bytearray);

客户端示例:

this.http
 .get("http://www.example.com/api/GetImage/"+id)
 .then(x=>{
    backImage = new Image()
    backImage.src = x;
   //render
});

Controller 示例:

public object GetImage(Guid id)
{
  string base64String;

  Byte[] bytes = File.ReadAllBytes("path to filename"+id);
  base64String = Convert.ToBase64String(bytes);

  return "data:image/jpg;base64," + base64String;
}

关于javascript - 将响应转换为新图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43471255/

相关文章:

javascript - 想了解一些Javascript函数解释

javascript - WebGL2 texelFetch'ing 纹理意外结果

javascript - 使用 Angular 中的一个管道过滤表中的多列

CSS 掩码在 Angular 5 中无法正常工作

javascript - 从 HTML 表单创建 PDF?后端还是前端应该负责?

javascript - react JS : Populating a rsuite dropdown from a json object

javascript - 选择选项以触发表格外观

javascript - 发送自定义用户代理字符串以及我的 header (获取)

javascript - 响应式(Reactive)表单不更新表单字段 Angular 7 中的值

angular - 在 Typescript/Angular2 组件中使用 MathJax