P5.JS:将生成艺术(使用 noise())保存为设备上的图像并在 HTML 上重新上传它们

P5.JS: Saving generative art (using noise()) as images on device and reuploading them on HTML

我正在使用 p5.js 和 noise() 函数研究生成艺术。我一直跟着 Daniel Shiffman 的教程,但他的最终产品总是以不断的生成结束,就像一个永恒的动画。

就我而言,我想将这些自动生成的画布作为图像保存在我的设备上。我想我的想法会有问题,因为这些形状是及时生成的,想要它们作为静止图像会否认它们的生成过程吗?

更准确地说:不计算我最终将从事的这个项目的数据库方面(我的猜测是程序应该首先创建这 6 个形状并将它们保存为图像,然后再次将它们上传到html 页面),我想要一个 html 页面有 6 个不同的自动生成形状的图像。

我的代码:

var inc;



function setup() {
  createCanvas(800, 800);
  background(0);
  noFill();
  t = 0;
}

function draw() {
  var r = 255 * noise(t+10);
  var g = 255 * noise(t+15);
  var b = 255 * noise(t+20);
  stroke(r,g,b, 18);
  strokeWeight(2);
  fill(r,g,b,5);
  var x1 = width * noise(t);
  var x2 = width * noise(t+1);
  var x3 = width * noise(t+2);
  var x4 = width * noise(t+3);
  var y1 = height * noise(t+4);
  var y2 = height * noise(t+5);
  var y3 = height * noise(t+6);
  var y4 = height * noise(t+7);

  quad(x1,y1,x2,y2,x3,y3,x4,y4);
  t += 0.01;


  //noLoop();
}

您只需右键单击 canvas 并将当前显示的内容保存为图像即可。

或者您可以使用 the reference 中的 save*() 函数之一。 save() 函数或 saveCanvas() 函数将是一个很好的起点。 saveFrames()功能可以保存短动画

或者,如果您想存储动画文件,您可以考虑使用像 ccapture.js or a tool like ScreenToGif 这样的库。

您也可以考虑简单地绘制一个非动画 canvas。硬编码您想要的值,然后使用 instance mode 显示多个静态草图。

采用哪种方法完全取决于您希望程序如何运行。我建议您尝试几种不同的方法,看看您最喜欢哪一种。