如何从Java websocket服务器发送图像以在HTML5画布中使用?
我有一个用Java实现的WebSocket服务器。当客户端连接时,我希望通过此连接发送一个图像,供客户端在画布元素中使用。我提出了以下服务器代码:如何从Java websocket服务器发送图像以在HTML5画布中使用?,java,image,websocket,html5-canvas,Java,Image,Websocket,Html5 Canvas,我有一个用Java实现的WebSocket服务器。当客户端连接时,我希望通过此连接发送一个图像,供客户端在画布元素中使用。我提出了以下服务器代码: public void onOpen(Connection connection) { try { BufferedImage image = ImageIO.read(new File("image.jpg")); ByteArrayOutputStream baos = new ByteArrayOutpu
public void onOpen(Connection connection) {
try {
BufferedImage image = ImageIO.read(new File("image.jpg"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", baos);
byte[] byteArray = baos.toByteArray();
connection.sendMessage(byteArray, 0, byteArray.length);
} catch (Exception e ){
System.out.println("Error: "+e.getMessage());
}
}
客户端Javascript如下所示:
onmessage : function(m) {
if (m.data) {
if (m.data instanceof Blob) {
var blob = m.data;
var bytes = new Uint8Array(blob);
var image = context.createImageData(canvas.width, canvas.height);
for (var i=0; i<bytes.length; i++) {
image.data[i] = bytes[i];
}
}
}
}
onmessage:function(m){
if(m.data){
if(Blob的m.data实例){
var blob=m.数据;
var字节=新的Uint8Array(blob);
var image=context.createImageData(canvas.width、canvas.height);
对于(var i=0;i请在发送之前尝试将图像转换为base64,例如:
function drawImage(imgString){
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var image = new Image();
image.src = imgString;
image.onload = function() {
ctx.drawImage(image, 0, 0);
};
}
一个关于如何在Java中将图像转换为base64的链接你解决问题了吗?我正在做一个类似的项目,看看这个视频:6:15分钟,我还读到jpeg需要解码:嘿,你使用的连接类是什么?它来自哪个库?我在这里提问:它来自org.eclipse.jetty.websocket.websocket包,我从这个jar文件中包括:希望帮助看起来不错,我一有时间就会查看它。谢谢:)是的,这很有效!但是我使用了一个不同于您链接到的Base64编码类。我使用的那个类没有自动包含“data:image/png;Base64,”-前缀,所以我不得不自己添加。我不知道你建议的那个是否可以这样做。如果不能,则必须单独添加。base64编码和解码有一定的处理开销,并且生成的数据大约要大30%。有更好的解决方案吗?imgString是什么?