Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 从XMLHttpRequest获取图像并显示它_Image_Html_Canvas_Jpeg_Data Uri - Fatal编程技术网

Image 从XMLHttpRequest获取图像并显示它

Image 从XMLHttpRequest获取图像并显示它,image,html,canvas,jpeg,data-uri,Image,Html,Canvas,Jpeg,Data Uri,我得到了一个提供jpeg图像的web服务。我想要的是拍摄这张图像,将其转换为数据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 = doc

我得到了一个提供jpeg图像的web服务。我想要的是拍摄这张图像,将其转换为数据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看起来像数据:image/jpeg;base64,77+977+977+977+9abKRKLG

已解决:事实证明我应该用以下内容覆盖mime类型:

req.overrideMimeType('text/plain; charset=x-user-defined');
req.responseType = 'arraybuffer';
并将响应类型设置为:

req.overrideMimeType('text/plain; charset=x-user-defined');
req.responseType = 'arraybuffer';

看。如果您也更改了响应类型,则应该发出异步请求。

首先,您需要创建一个隐藏的img元素 然后,除了在img元素上侦听onload事件之外,您完全按照您所做的操作进行操作。 启动此活动后,您可以获得图片的宽度和高度,以便将画布设置为相同的大小


您可以像在最后一行中那样绘制图像。

我认为具有数据URI源的图像立即准备就绪,但即使有onload事件,也无法工作,因为会触发错误。我已经解决了问题,请参阅我的上一次编辑。