Хорошо, я нашел способ достижения этого sh. Из большого двоичного объекта, полученного от OffscreenCanvas, я создаю объект Image
, затем отображаю его в canvas
, затем я могу записать URL-адрес данных с этого холста в файл на диске, и он дает мне действительный PNG. Вот код
const canvas = new OffscreenCanvas(this.width, this.height);
const ctx = canvas.getContext('2d');
const v = await Canvg.from(ctx!, this.svg.innerHTML, presets.offscreen());
// Render only first frame, ignoring animations and mouse.
await v.render();
const blob = await canvas.convertToBlob();
const pngUrl = URL.createObjectURL(blob);
var img = new Image();
img.onload = () => {
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
canvas.width = this.width;
canvas.height = this.height;
context!.drawImage(img, 0, 0);
let dataURL = (canvas as HTMLCanvasElement).toDataURL();
const base64Data = dataURL.replace(/^data:image\/png;base64,/, "");
fs.writeFile("test5.png", base64Data, 'base64', function (err) {
console.log(err);
});
}
img.src = pngUrl;
Хотелось бы посмотреть, есть ли у кого-нибудь лучшее предложение.