2017-04-18 3 views
0

Gibt es eine Möglichkeit, eine HTTP-Get-Antwort in Image() -Objekt zu konvertieren?Antwort auf neues Bild konvertieren

zur Zeit verwende ich:

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

ich möchte meine Web-api verwenden (die dazu dient, 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; 
      } 

, die ich zur Zeit über

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

aufrufen Wenn ich testen In Postman gebe ich die Antwort zurück und rendere das Bild.

Ich versuche herauszufinden, ob es möglich ist, diese Antwort zu konvertieren und sie im Image() -Objekt als Beispiel zu speichern.

+1

Was Sie in 'GetImage' API zurückkehrt? – Satpal

+0

HttpResponseMessage mit dem Bild – Aeseir

+0

liest Ihre Methode die '.jpg' Datei und schickte den Stream als Antwort an den Client? – Nirus

Antwort

1

Sie können base64 Wert des Bildes zurück:

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

Beispiel auf Client-Seite:

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

Beispiel für 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; 
} 
+0

Ich habe Ihre Antwort erweitert, um anderen mit einem vollständigen Bild (Controller + Client-Seite) zu helfen – Aeseir

0

Hier ist ein Beispiel unter Verwendung von setgetgo API die das Bild basierend auf der ID

zurückgibt
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) 

Arbeiten Fiedler link


Um das Bild auf der Festplatte zu speichern Kasse diese SO answer