Работая с node.js примером canvg , я могу успешно преобразовать SVG в PNG (код работает). У меня вопрос, состоящий из двух частей.
Во-первых, я конвертирую импорт в требуемый, чтобы он работал под Node v12.16.3:
const fs = require("fs").promises;
const DOMParser = require("xmldom").DOMParser;
const canvas = require("canvas");
const fetch = require("node-fetch").fetch;
const Canvg = require("canvg").Canvg;
const presets = require("canvg").presets;
//Will the above "requires" work the same as the below "imports"?
import { promises as fs } from "fs";
import { DOMParser } from "xmldom";
import * as canvas from "canvas";
import fetch from "node-fetch";
import Canvg, { presets } from "canvg";
Это правильный способ выполнения "require"?
Вторая часть вопроса с использованием полного кода:
const fs = require("fs").promises;
const DOMParser = require("xmldom").DOMParser;
const canvas = require("canvas");
const fetch = require("node-fetch").fetch;
const Canvg = require("canvg").Canvg;
const presets = require("canvg").presets;
const preset = presets.node({
DOMParser,
canvas,
fetch,
});
//
(async (output, input) => {
const svg = await fs.readFile("./mynewfile.svg", "utf8"); //imports an SVG
const canvas = preset.createCanvas(800, 600); //creates a canvas
const ctx = canvas.getContext("2d"); //Returns a drawing conext
const v = Canvg.fromString(ctx, svg, preset); //Builds the canvas from the above variables
// Render only first frame, ignoring animations.
await v.render();
const png = canvas.toBuffer(); //Pushes rendered canvas to buffer?
await fs.writeFile("./mynewfile.png", png); //creates the png
})(process.argv.pop(), process.argv.pop()); //Is this passing process.argv.pop() as an input and and output of this function?
Почему process.argv.pop () передается как вход и выход этой функции?