0
svg blobをキャンバス経由でpngに変換する際に問題があります。typescript w/angle loding bloburlをimgに変換しない
ここに私のコード:
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
const data = (new XMLSerializer()).serializeToString(svg);
const svgBlob = new Blob([data], {type: 'image/svg+xml;charset=utf-8'});
console.log(svgBlob, canvas);
const img = new Image();
const url = URL.createObjectURL(svgBlob);
img.onload = (() => function() {
console.log('inside onload');
ctx.canvas.width = size;
ctx.canvas.height = size;
ctx.drawImage(img, 0, 0);
URL.revokeObjectURL(url);
const imgURI = canvas
.toDataURL('image/png')
.replace('image/png', 'image/octet-stream');
DownloadModalComponent.triggerDownload(imgURI);
});
img.src = url;
console.log(img.complete, img.currentSrc);
これは、プレーンのJavaScript(もいくつかのjQuery)で以前働いていました。
コンソールがimg.complete falseに出力され、currentSrcが空です。
[ネットワーク]タブでは、ローカルのsvg urlが取得されていることがわかります。
それは私の多くを助けた。問題はimg.onloadが '()=> function(){'私は今それを回避したが、それはバグか私の間違いですか? –
あなたはあなたのスニペットで匿名の機能をしようとしていますが、なぜあなたはそれを望んでいるのかわかりません:)別のもの - 私はsvgBlobなどを作成するあなたのようなコードを持っていました。それから、私は誰かがこのように(データ文字列を使用して)それをやったのを見ました。そして、それは私がよりエレガントなsolutoin –