Jak wyświetlić obraz przechowywany jako tablica bajtów w HTML / JavaScript? [Zamknięte]


83

Piszę stronę internetową w HTML / JavaScript. Pobieram obraz z mojego zaplecza za pomocą AJAX. Obraz jest reprezentowany jako nieprzetworzona tablica bajtów, a nie adres URL, więc nie mogę zastosować standardowego <img src="{url}">podejścia.

Jak wyświetlić wspomniany obraz użytkownikowi?



OutputStream o = resp.getOutputStream (); o.write (imageInBytes);

1
Boję się zapytać, ale ciekawość zwycięża ... Dlaczego to nie na temat?
cubuspl42

Nie sądzę, żeby ten problem był nie na temat.
metasoarous

Odpowiedzi:


141

Spróbuj umieścić ten fragment kodu HTML w wyświetlanym dokumencie:

<img id="ItemPreview" src="">

Następnie po stronie JavaScript można dynamicznie modyfikować srcatrybut obrazka za pomocą tzw. Data URL .

document.getElementById("ItemPreview").src = "data:image/png;base64," + yourByteArrayAsBase64;

Alternatywnie, używając jQuery:

$('#ItemPreview').attr('src', `data:image/png;base64,${yourByteArrayAsBase64}`);

Zakłada się, że twój obraz jest przechowywany w formacie PNG, który jest dość popularny. Jeśli używasz innego formatu obrazu (np. JPEG), odpowiednio zmodyfikuj typ MIME ( "image/..."część) w adresie URL.

Podobne pytania:


2
Mój bajt = dwr / download / k1a3JvBCfU3vLji $ zKkhQObxzck. src = dane: image / png; base64, dwr / download / k1a3JvBCfU3vLji $ zKkhQObxzck. Użyłem DWR

Pobieranie obrazu w formacie bajtowym.
Diamond King

2
Spóźniony na przyjęcie, ale jeśli wygląda Twoja odpowiedź [137,80,78,71,13,10,26,10,0,...], możesz skorzystać z tej linii:document.getElementById("ItemPreview").src = "data:image/png;base64," + btoa(String.fromCharCode.apply(null, new Uint8Array([137,80,78,71,13,10,26,10,0,...])));
Joel'- '

1
Poprawiłem nieco odpowiedź, aby była bardziej przejrzysta, ale nie dostaję jednej rzeczy, więc tak naprawdę tego nie naprawiłem. Dlaczego ta odpowiedź zakłada, że ​​obraz jest przechowywany w ciągu base64? OP wspomniał (i sprawdziłem historię edycji) o „tablicy bajtów”, a nie o „ciągu base64”.
cubuspl42

1
@ Joel'- 'To zadziałało dla mnie, Thnks
Mohammad Hossein Ganjyar
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.