Ich versuche, ein Bild von einer API in Form von bytes
an das Front-End zurückgegeben, um an die Seite anzuhängen.C# zu JS: Wie img src mit base64 (RawBytes) Bildformat anhängen?
I nicht möchten Sie das Bild im Dateisystem speichern, nur durch diesen Weg.
Die Antwort wird zurückgegeben, aber ich bin verloren, wie dieser Vorgang abgeschlossen wird.
Hier ist meine API-Aufruf:
[HttpGet("api/GetCamImages")]
public async Task<HttpResponseMessage> ImageFromPath()
{
RestClient client = new RestClient("http://MYIPADDRESS/cgi-bin/snapshot.cgi?channel=0");
RestRequest request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("authorization", "Basic YLKHSouHSSUGh2");
TaskCompletionSource<IRestResponse> taskCompletion = new TaskCompletionSource<IRestResponse>();
RestRequestAsyncHandle handle = client.ExecuteAsync(request, r => taskCompletion.SetResult(r));
RestResponse restResponse = (RestResponse)(await taskCompletion.Task);
StringContent myContent = new StringContent(Convert.ToBase64String(restResponse.RawBytes));
var response = new HttpResponseMessage(System.Net.HttpStatusCode.OK);
response.Content = myContent;
response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/png");
return response;
}
Meine js:
$http.get('/api/GetCamImages').then(function (response) {
console.log(response.data);
$("#imgContainer").append('<img src="data:image/png;base64,' + response.data.content + '" />');
});
Die console.log
darüber angezeigt wird:
Um zu bestätigen, - Ich stelle fest, dass die img src oben kommt aber als [object, Object]
, weshalb das Bild nicht angezeigt wird. Aber wie würdest du diesen ganzen Anruf erfolgreich machen?
Sicherlich müssen Sie r Eine base64-Zeichenfolge umwandeln: 'Convert.ToBase64String (restResponse.RawBytes)' - Sie können keine rohen Binärdaten in 'data: image/png; base64,' –
@AlexK stopfen. Ich habe geändert in 'response.Content = new StringContent (restResponse.RawBytes);' aber es gibt immer noch '' kann nicht von Byte [] in String 'Fehler konvertieren für die' restResponse.RawBytes'. – NoReceipt4Panda
'new StringContent (Convert.ToBase64String (restResponse.RawBytes));'? –