1
作成した画像を自動的にダウンロードしようとしています。私はこれまでのところ、これを持っている:JavaScript画像をdrawImageで作成した後に保存
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var img1 = loadImage('https://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png', main);
var img2 = loadImage('http://introcs.cs.princeton.edu/java/31datatype/peppers.jpg', main);
var imagesLoaded = 0;
function main() {
imagesLoaded += 1;
if(imagesLoaded == 2) {
// composite now
ctx.drawImage(img1, 0, 0);
ctx.globalAlpha = 0.5;
ctx.drawImage(img2, 0, 0);
document.location.href = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
}
}
function loadImage(src, onload) {
// http://www.thefutureoftheweb.com/blog/image-onload-isnt-being-called
var img = new Image();
img.onload = onload;
img.src = src;
return img;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<canvas width="512" height="512" id="canvas"></canvas>
画像が処理され、正しく作成されますが、ダウンロードがトリガされないと、次のエラーメッセージが表示されている:
Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported
私は読んだことがありますCORS enabled imageのMDNの文書で、crossOrigin
を匿名に設定しようとしましたが、それでも動作しません。
ダウンロードをトリガーするのに適した方法はありますか?
おかげで答えのためではなく、第三部のプロキシサイトを使用するには、あなたが簡単にセットアップバックエンドは自分のためにリソースを取得することができ、生産 – fightstarr20
ためそれほど大きくない、devに関する素晴らしいです。私は 'fetch'を使ってイメージリソースを取得し、base64のblobを作成し、' img.src'を 'data:image/gif; base64、...'に設定することを考えました。それだけでうまくいくかもしれません。 –