async function resizeToCanvas(url, scale = 1) {
let img = new Image();
img.crossOrigin = "*";
img.src = url;
await new Promise((resolve) => img.addEventListener("load", resolve));
let w = img.width;
let h = img.height;
let f = factorize(w, h, 512);
let sw = Math.floor(f.width * scale);
let sh = Math.floor(f.height * scale);
let sow = Math.floor(w * scale);
let soh = Math.floor(h * scale);
if (toggle4) {
let ctx = DOM.canvas(sw, sh).getContext("2d");
ctx.drawImage(img, 0, 0, sw, sh);
ctx.canvas.originalWidth = img.width;
ctx.canvas.originalHeight = img.height;
return ctx.canvas;
} else {
let ctx = DOM.canvas(sow, soh).getContext("2d");
ctx.drawImage(img, 0, 0, sow, soh);
ctx.canvas.originalWidth = img.width;
ctx.canvas.originalHeight = img.height;
return ctx.canvas;
}
}