2017-04-18 30 views
0

有沒有辦法將HTTP Get響應轉換爲Image()對象?將響應轉換爲新圖像

目前我使用:

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

我想用我的網絡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()對象中,如示例所示。

+1

你在'GetImage' API返回? – Satpal

+0

HttpResponseMessage包含圖像 – Aeseir

+0

您的方法是否讀取'.jpg'文件並將該流作爲respose發送給客戶端? – Nirus

回答

1

您可以返回你的形象的base64值:使用setgetgo API的例子

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

我已經擴大了您的答案,以幫助其他人完整的圖片(控制器+客戶端) – Aeseir

0

這裏:控制器

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

例如:

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

在客戶端例子返回基於ID的圖像

var img = new Image(); 
var generateImageId =() => Math.ceil(Math.random() * 100000); 
img.src = "http://setgetgo.com/randomimage/get.php?key=" + generateImageId(); 
document.body.appendChild(img) 

工作提琴手link


要保存圖像到磁盤結帳這個SO answer