java – jetty websockets发送二进制数据(图像)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – jetty websockets发送二进制数据(图像),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1441字,纯文字阅读大概需要3分钟。
内容图文
![java – jetty websockets发送二进制数据(图像)](/upload/InfoBanner/zyjiaocheng/824/6eaa69081a20473099d3780ec576b6d7.jpg)
我正在尝试使用Jetty 8.1.2 WebSockets将一些二进制数据(图像)发送到javascript客户端.
websockets java代码:
BufferedImage image = getTheImage();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", baos);
baos.flush();
byte[] imageInBytes = baos.toByteArray();
baos.close();
socket.getConnection().sendMessage(imageInBytes, 0, imageInBytes.length);
javascript代码:
binarySocket.onmessage = function(event) {
if (event.data instanceof ArrayBuffer) {
var bytearray = new Uint8Array(event.data);
var tempcanvas = document.createElement('canvas');
tempcanvas.height = imageheight;
tempcanvas.width = imagewidth;
var tempcontext = tempcanvas.getContext('2d');
var imgdata = tempcontext.getImageData(0, 0, imagewidth,imageheight);
var imgdatalen = imgdata.data.length;
for ( var i = 8; i < imgdatalen; i++) {
imgdata.data[i] = bytearray[i];
}
tempcontext.putImageData(imgdata, 0, 0);
var img = document.createElement('img');
img.height = imageheight;
img.width = imagewidth;
img.src = tempcanvas.toDataURL();
chatdiv = document.getElementById('chatdiv');
chatdiv.appendChild(img);
chatdiv.innerHTML = chatdiv.innerHTML + "<br />";
}
};
如果我在磁盘上写图像代码很好,但如果我尝试在HTML页面上显示图像,我会得到一些随机的彩色图像.
我可能以错误的方式编码图像.
知道如何将图像作为二进制数据发送并用javascript显示吗?
解决方法:
你是对的.问题是图像编码.
更换:
img.src = tempcanvas.toDataURL();
至
img.src = tempcanvas.toDataURL("image/jpeg");
默认格式为PNG.
内容总结
以上是互联网集市为您收集整理的java – jetty websockets发送二进制数据(图像)全部内容,希望文章能够帮你解决java – jetty websockets发送二进制数据(图像)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。