2016-10-18 5 views
0

Я конвертирую изображение в bytebuffer в java и отправляю его через websocket в java для клиента. Java сторона выглядеть:Как преобразовать ByteBuffer в изображение в HTML

@OnOpen 
public void onOpen(Session sessions) { 
    String fileName = sessions.getUserPrincipal().getName() + ".png"; 
    File fi = new File("/Users/shilu/MyProject/Chat/Photo/" + fileName); 
    byte[] fileContent = null; 
    try { 
     fileContent = Files.readAllBytes(fi.toPath()); 
     ByteBuffer buf = ByteBuffer.wrap(fileContent); 
     sessions.getBasicRemote().sendBinary(buf); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

В стороне клиента я просто получить его так:

gp.onmessage = function(evt) { 
    var msg = evt.data; 
}; 

Теперь, как я показываю это изображение в HTML ...?

+0

Возможный дубликат [Set IMG SRC из массива байт] (http://stackoverflow.com/questions/30129486/set- img-src-from-byte-array) – DimaSan

+0

Как преобразовать evt в массив байтов? –

ответ

0

Try положить evt.data в изображения атрибут Src

gp.onmessage = function(evt) { 
    var msg = evt.data; 
    document.getElementById("image").src = msg; 
}; 
+0

Это не сработает, его нужно преобразовать в URI данных, чтобы он работал. – jcubic

+0

Как преобразовать его в данные URL –

0

Прежде всего, необходимо преобразовать данные в base64, а затем создать данные URI:

var img = document.createElement('img'); 
img.src = 'data:image/jpg;base64,' + btoa(evt.data); 
document.body.appendChild(img); 
+0

Нет, он не работает Я получаю ошибку, поскольку TypeError: null не является объектом (оценка «document.getElementById (« # profImg »). Src = 'data: image/jpg; base64, '+ btoa (evt.data)') –

+0

@ R.Shilesh удаляет хэш из '# profImg',' getElementById' принимает id, а не селектор css для id. – jcubic

+0

может указать, как изменить источник уже созданного элемента. –

0

преобразует байты изображения в base64 кодированные строка в java перед возвратом.

StringUtils.newStringUtf8(Base64.encodeBase64(buf.array(), false));

затем добавить изображение в HTML файл, как показано ниже: <img src="data:image/jpg;base64,{base64String returned from java}"/>