我得到了这个网络服务,它给了我一个(jpeg)图像。我想要的是获取这张图片,将其转换为数据 URI 并将其显示在 HTML5 画布上,如下所示:
obj = {};
obj.xmlDoc = new window.XMLHttpRequest();
obj.xmlDoc.open("GET", "/cgi-bin/mjpegcgi.cgi?x=1",false, "admin", "admin");
obj.xmlDoc.send("");
obj.oCanvas = document.getElementById("canvas-processor");
obj.canvasProcessorContext = obj.oCanvas.getContext("2d");
obj.base64Img = window.btoa(unescape(encodeURIComponent( obj.xmlDoc.responseText )));
obj.img = new Image();
obj.src = 'data:image/jpeg;base64,' + obj.base64Img;
obj.img.src = obj.src
obj.canvasProcessorContext.drawImage(obj.img,0,0);
不幸的是,这段代码不起作用;图像根本没有画在画布上(加上它似乎有宽度和高度= 0,它可能没有正确解码吗?我没有例外)。img.src 看起来像data:image/jpeg;base64,77+977+977+977+9ABBKRklG....
已解决:原来我应该使用以下命令覆盖 mime 类型:
req.overrideMimeType('text/plain; charset=x-user-defined');
并设置响应类型:
req.responseType = 'arraybuffer';
(请参阅this。如果您也更改响应类型,则应该发出异步请求)。