(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は次のようになりますdata:image/jpeg;base64,77+977+977+977+9ABBKRklG....
解決済み:mimeタイプを次のようにオーバーライドする必要があることが判明しました:
req.overrideMimeType('text/plain; charset=x-user-defined');
応答タイプを次のように設定します。
req.responseType = 'arraybuffer';
(これを参照してください。応答タイプを変更する場合も、非同期要求を行う必要があります)。