javascript 如何将p5.js canvas png文件保存到本地?

pvabu6sv  于 2023-04-10  发布在  Java
关注(0)|答案(2)|浏览(172)

如何访问在p5.js canvas中创建的png文件?我已经尝试了p5 saveCanvas功能,它可以直接在浏览器中下载设计。我不希望它直接下载,我想将其保存在本地以便稍后访问?(基本上将其保存在变量中以供进一步处理)
我如何才能做到这一点?

eqqqjvef

eqqqjvef1#

您可以将saveCanvas()函数与createCanvas()函数结合使用。下面是一个示例:

function setup() {
  // create a p5.js canvas
  createCanvas(400, 400);
}

function draw() {
  // draw something on the canvas
  background(220);
  fill(0);
  ellipse(200, 200, 100, 100);
}

function keyPressed() {
  // save the canvas as a PNG file when the 's' key is pressed
  if (key === 's') {
    saveCanvas('myCanvas', 'png');
  }
}

在本例中,按“s”键将画布保存为默认下载文件夹中名为“myCanvas.png”的PNG文件。
如果你想将文件保存在特定的位置,你可以像这样将路径添加到saveCanvas()函数中:

saveCanvas('path/to/myCanvas', 'png');

这将文件保存在“path/to/”目录中,名称为“myCanvas.png”。
将画布保存为PNG文件后,您可以像访问计算机上的任何其他文件一样访问它。您可以使用p5.js中的loadImage()函数加载保存的PNG文件并进一步操作它。下面是一个示例:

let myImage;

function preload() {
  // load the saved PNG file
  myImage = loadImage('path/to/myCanvas.png');
}

function setup() {
  // create a p5.js canvas
  createCanvas(400, 400);
}

function draw() {
  // draw the saved image on the canvas
  background(220);
  image(myImage, 0, 0);
}

保存的PNG文件被加载到preload()函数中,并存储在myImage变量中。然后,在draw()函数中,使用image()函数在画布上绘制图像。

yizd12fk

yizd12fk2#

根据您想要存储的内容,您可以先尝试storeItem(key, value),然后再尝试getItem(key)
另一种方法是saveFrames(),因为它有一个回调函数。

let img;
function draw() {
 background(mouseX);
 if (img) {
     image(img,50,50);
 }
}
 function mousePressed() {
 saveFrames('out', 'png', 1, 2, data => {
   let a = str(data[0].imageData);
     img = loadImage(a);
    });
 }

但我认为哈桑的方法会很有效。

相关问题