如何将 p5.js canvas 保存为非常大的 PNG?

How do I save a p5.js canvas as a very large PNG?

我知道如何使用 p5.js 保存 canvas。但是我想将 canvas 另存为非常大的 png(例如 8000x8000),以便我可以在 Photoshop 中使用它并将图像缩小到适当的大小。除了在后台创建一个对于浏览器而言太大的新 canvas window 之外,是否有一种简单的方法可以做到这一点?

您可以使用 createGraphics() 函数来创建离屏缓冲区。然后你可以使用 image() 函数将它绘制到屏幕上,或者你可以调用它的 save() 函数将它存储为一个文件。这是一个例子:

let pg;

function setup() {
  createCanvas(400, 400);
  pg = createGraphics(4000, 4000);
  pg.background(32);
}

function draw() {
  pg.ellipse(random(pg.width), random(pg.height), 100, 100);
  image(pg, 0, 0, width, height);
}

function mousePressed(){
 pg.save("pg.png"); 
}

将所有内容绘制到 pGraphics 对象中。 通常,您将此 "output" 绘制为 canvas 的图像。 但是如果你想导出它的高分辨率版本,你先放大它。

let scaleOutput = 1;
let output;
let canvas;

// setup
function setup() {

    // other stuff...
    output = createGraphics(1000, 640);
    canvas = createCanvas(1000, 640);

}
// the draw loop
function draw() {

    // Clear Canvas
    background(255);
    output.clear();

    // Set scale
    output.push();
    output.scale(scaleOutput);

    // Draw to your output here...

    output.pop();


    // Show on canvas
    image(output, 0, 0);
}

// Scale up graphics before exporting
function exportHighRes() {
    // HighRes Export
    scaleOutput = 5;
    output = createGraphics(scaleOutput * 1000, scaleOutput * 640);
    draw();
    save(output, "filename", 'png');

    // Reset Default
    scaleOutput = 1;
    output = createGraphics(1000, 640);
    draw();
}

// Export when key is pressed
function keyReleased() {
    if (key == 'e' || key == 'E') exportHighRes();
}