0

我们使用 EasyRTC 从 iPad 发送图像捕获(我们“手动”创建屏幕截图并通过 socket.io 发送)到网络浏览器。在服务器上,我们有 EasyRTC v.1.0.12 和 Socket.IO v.0.9.16。很难说发生了什么(我刚加入项目,遇到了这个问题。PM说前段时间没问题)但最近我们开始注意到一些框架被涂黑了。我们正在调试这个问题几天,我们的想法已经用完了。我们不确定问题出在哪里。我们现在从设备发送正确的图像。我们注意到只有当图像与之前的图像不同时才会发生这种情况(但并非总是如此......在较弱的互联网连接上更容易观察到它)。当图像“重复”时

在附件中,您可以找到来自 Chrome 网络调试器的信息。正如您在缩略图或图像中看到的,没问题。缓存中的大小/内容是可以的,但是大小为 0 且内容 > 0 的内容在我们想要在画布上绘制它们时会出现黑屏。

知道我们做错了什么吗?如何调试它?似乎图像在我们尝试绘制它们之前以某种方式下载?

我们的服务器在 AWS 上。

在此处输入图像描述

4

2 回答 2

0

您正在尝试将图像作为 base 64 编码的 jpeg 发送。基本上是大文本字符串。您应该问自己的第一件事是:我发送的文本字符串是到达服务器还是被截断?检查正在发送的字符串的长度与正在发送的字符串的长度,然后检查字符串的开头和结尾。

于 2016-01-19T19:28:56.633 回答
0

最后我们找到了非常简单的解决方案。事实证明,我们试图在图像完全加载之前绘制图像。所以我们所做的是将绘图代码移动到 image.onLoad 方法,现在它可以按预期工作。

img.src = "data:image/png;base64, <img content>";
img.onload = function(){ 
   canvas.drawImage(img);
}
于 2016-01-20T06:07:47.167 回答