2017-01-21 23 views
0

イメージURLをbase64イメージに変換しようとしています。私は使用しようとしているthisを見つけました。Javascript URLをBase64イメージに変換する

I次のコードを持っている:

var imgUrl = 'https://www.google.de/images/srpr/logo11w.png'; 
let base64image = this.getBase64Image(imgUrl); 
console.log(base64image); 

public getBase64Image(imgUrl) { 
    var img = new Image(); 
    img.src = imgUrl; 
    var canvas = document.createElement("canvas"); 
    canvas.width = img.width; 
    canvas.height = img.height; 
    var ctx = canvas.getContext("2d"); 
    ctx.drawImage(img, 0, 0); 
    var dataURL = canvas.toDataURL("image/png"); 
    return dataURL.replace(/^data:image\/(png|jpg);base64,/, ""); 
} 

しかし、それは次のように出力を:

data:,

I取得コンソールに次のエラー:

EXCEPTION: Uncaught (in promise): SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported. Error: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

私のコードは私には必要です。誰でもbase64イメージにURLを変換する方法を助言してもらえますか?

おかげ

UPDATE

は、私は、関数に次の行aded:

img.crossOrigin = "Anonymous"; 

エラーを処分した、しかし、今、私は次の取得します

data:,

+0

ルック - *エラー:「HTMLCanvasElement」オン「toDataURL」を実行に失敗しました:汚染されたキャンバスをエクスポートすることはできません* – Quentin

+0

を追加しましたエラーメッセージ。これを指摘していただきありがとうございます。 – Richard

+0

これを重複としてマークしました。どの質問に重複がありますか? – Richard

答えて

0

XHRとFil e Reader APIを使用していますが、クリーナーですが、browser compatibilityに制限されています。あなたがコンソールに乗るのエラーメッセージで

var imgxhr = new XMLHttpRequest(); 
    imgxhr.open("GET", url); 
    imgxhr.responseType = "blob"; 
    imgxhr.onload = function(){ 
     if (imgxhr.status===200){ 
      reader.readAsDataURL(imgxhr.response); 
     } 
     else if (imgxhr.status===404){ 
      // Error handle 
     } 
    }; 
var reader = new FileReader(); 
    reader.onloadend = function() { 
     console.log(reader.result.length); 
     // Code here 
    }; 
imgxhr.send(); 
+0

私はIonicモバイルアプリケーションを構築しています。その環境で動作するのでしょうか? – Richard

+0

それはIE10とSafari 6ではうまくいきませんか? – Richard

+0

@リチャード残念ながら、私はそのフレームワークに精通していません。 –

関連する問題