javascript - 在多个用户之间共享上传的图像到 Canvas

标签 javascript node.js canvas socket.io

我正在制作一个带有 Node 和套接字的协作应用程序,我可以将图像上传到 Canvas 。如果其中一个连接的用户上传了一张图像,我如何才能将该图像绘制给所有连接的用户?

这是我尝试过的:

客户端

socket.on('img', 
        function() {
        console.log("Image uploaded");
        ctx.drawImage(img, 105, 50);
        }
    );

function el(id){return document.getElementById(id);}
    function readImage() {
        if ( this.files && this.files[0] ) {
            var FR= new FileReader();
            FR.onload = function(e) {
               var img = new Image();
               img.onload = function() {
                   var image = ctx.drawImage(img, 105, 50);
                   console.log("sendimg: ");
                   socket.emit('img');
               };
               img.src = e.target.result;
            };       
            FR.readAsDataURL( this.files[0] );
        }
    }
    el("fileUpload").addEventListener("change", readImage, false);

服务器

socket.on('img',
      function() {
      console.log("Image Uploaded");
        socket.broadcast.emit('img');
      }
    );

最佳答案

当您发送时,您还需要发送图像数据。例如,您可以发送图像的 base64 编码版本:

img.onload = function() {
   var image = ctx.drawImage(img, 105, 50);
   console.log("sendimg: ");
   socket.emit('img', ctx.toDataURL());
};

然后,您可以添加图像,并将 src 设置为该数据 URL。 Different image formats are available if you prefer

然后您需要更新客户端以处理该参数:

socket.on('img', function(dataURL) {
    console.log("Image uploaded");
    var img = new Image;
    img.onload = function(){
      ctx.drawImage(img, 105, 50);
    };
    img.src = dataURL;

});

您的服务器将其传递:

socket.on('img', function(dataURL) {
    console.log("Image Uploaded");
    socket.broadcast.emit('img', dataURL);
});

关于javascript - 在多个用户之间共享上传的图像到 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43505978/

相关文章:

python - tkinter 不需要的函数覆盖

javascript - 如何在不使用Js id选择器的情况下动态获取Angular * ngFor中的元素

javascript - 拉出一段绳子的最佳方法

javascript - 在 Markdown 服务器或客户端中格式化? Node js

node.js - 无法使用 Mongoose 在 MongoDB Atlas 数据库上读取/写入

javascript - MeanJS - 将 Angular 集成到 index.html 文件中

javascript - 使用 html5 Canvas 的 toDataURL 绘制图像

javascript - 当另一个图像触摸它时如何使图像消失?网页/JS

javascript - 如何使用 jQuery 使用不同的 CSS?

javascript - dc.js 制作两种颜色之间的颜色范围