私にはこの(jpeg)画像を与えるこのWebサービスがあります。残念ながらXMLHttpRequestから画像を取得して表示する
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);
、コードのこの部分が動作しません。:私が欲しいのは、この画像を撮るデータURIに変換し、そのように、HTML5のキャンバス上に表示されます画像はキャンバスに塗られていません(プラス幅と高さ= 0のようですが、正しくデコードできないのでしょうか?例外はありません)。 img.srcはdata:image/jpeg;base64,77+977+977+977+9ABBKRklG....
がを解決次のようになります。
req.overrideMimeType('text/plain; charset=x-user-defined');
とで応答タイプを設定します:
req.responseType = 'arraybuffer';
(thisを参照してください私はとMIMEタイプをオーバーライドしているはず判明します。応答タイプを変更する場合は、非同期要求を行う必要があります)。
データURIソースを持つ画像はすぐに準備できましたが、onloadイベントでも機能しません(onerrorは代わりに起動されます)。とにかく問題を解決しました。私の最後の編集を見てください。 – janesconference