Як відобразити зображення, що зберігається як байтовий масив у HTML / JavaScript? [зачинено]


83

Я пишу веб-сторінку у форматі HTML / JavaScript. Я завантажую зображення зі свого серверного сервера за допомогою AJAX. Зображення представлено як необроблений байтовий масив, а не як URL-адреса, тому я не можу використовувати стандартний <img src="{url}">підхід.

Як відобразити згадане зображення користувачеві?



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

1
Я боюся запитати, але цікавість перемагає ... Чому це не в темі?
cubuspl42

Я не думаю, що це питання не є темою.
метасоарій

Відповіді:


141

Спробуйте вставити цей фрагмент HTML у документ, який ви обслуговуєте:

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

Потім, на стороні JavaScript, ви можете динамічно змінювати srcатрибут зображення за допомогою так званої URL-адреси даних .

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

Як варіант, використовуючи jQuery:

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

Це передбачає, що ваше зображення зберігається у форматі PNG, який є досить популярним. Якщо ви використовуєте інший формат зображення (наприклад, JPEG), відповідно змініть тип ( "image/..."частина) MIME в URL-адресі.

Схожі питання:


2
Мій байт = dwr / download / k1a3JvBCfU3vLji $ zKkhQObxzck. src = дані: image / png; base64, dwr / download / k1a3JvBCfU3vLji $ zKkhQObxzck. Я використовував DWR

Завантажити зображення формату байта.
Diamond King

2
Пізно на вечірку, але якщо ваша відповідь виглядає [137,80,78,71,13,10,26,10,0,...], ви можете скористатися цим рядком:document.getElementById("ItemPreview").src = "data:image/png;base64," + btoa(String.fromCharCode.apply(null, new Uint8Array([137,80,78,71,13,10,26,10,0,...])));
Джоел'- '31

1
Я трохи відредагував відповідь, щоб зробити її більш зрозумілою, але я не отримую однієї речі, тому я насправді не виправив її. Чому ця відповідь передбачає, що зображення зберігається в рядку base64? В OP згадується (і я перевіряв історію редагування) "байтовий масив", а не "рядок base64".
cubuspl42

1
@ Joel'- '' Це спрацювало для мене, дякую
Мохаммад Хоссейн Ганджяр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.