0
Ich habe Probleme beim Konvertieren eines Svg Blob in ein Png über Leinwand.typescript w/eckig loding bloburl img funktioniert nicht
Hier mein Code:
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);
Dies war zuvor mit einfachen Javascript (auch einige Jquery).
Die Konsole wird für img.complete false ausgegeben und currentSrc ist leer.
In der Registerkarte Netzwerk kann ich sehen, dass die lokale Svg URL abgerufen wird.
Hey, Thx für Ihre Antwort! Es hat mir sehr geholfen. das Problem scheint, dass img.onload nicht '' mag() => function() {'Ich habe jetzt daran gearbeitet, aber ist das ein Bug oder mein Fehler? –
also Sie versuchen, anonyme Funktion in Ihrem Snippet zu tun, und ich bin mir nicht sicher, warum sollten Sie das :) eine andere Sache - Ich hatte den Code wie Ihre, wo ich SvgBlob usw. erstellen würde und ich hatte Probleme mit einigen Browsern. Dann habe ich gesehen, dass jemand es so gemacht hat (mit Datenstring) und seitdem das funktionierte, dachte ich, dass es eleganter wäre –