使用处理 2 保存帧并将它们放入网格中

Saving frames and placing them into a grid using processing 2

我想在这里完成两个任务,我让它们在两个处理文件中分开工作,但我希望它们在一个文件中工作。我有部分工作,但我需要帮助的两个部分是:

1:我想在一个文件中保存25张图片,从0开始(目前是从1开始)

2:我想将这些图像加载到网格中

任何帮助都会很棒!

import processing.pdf.*;
import geomerative.*;
import java.util.Calendar;
PImage[] images = new PImage[25];
int ic;
PImage img;
RFont font;
int lastTime = 1;
int test = new File("/Processing2/data2").listfiles.length;
boolean savePDF = false;

void setup(){
  size(1000, 1000);

background(0);
  for ( int i = 0; i< images.length; i++ )
{
images[i] = loadImage( i + ".png" );   // make sure images "0.png" to "25.png" exist
}
}

void draw() {    
// Save images
stroke (random(75,150), random (200,256), random(50,150));
float distance = random(200);
strokeWeight(1);
line (0, distance, 200, distance);    
}    
    if( millis() >= 750){
    saveFrame("data/##.png");    
}    
//Load saved images into a grid

if (test ==25){
 ic= 0;
  float tileCountX = 5;
  float tileCountY = 5;
  float stepX = width/tileCountX;
  float stepY = height/tileCountY;
  for (float gridY = 0; gridY < height; gridY += stepY){
    for (float gridX = 0; gridX < width; gridX += stepX){
           image(images[ic], gridX, gridY, stepX, stepY);
           ic++;
    }
}
 }    
 else {     
 }
  }

您正在尝试合并两个项目,但并未删除不使用的代码。由于您一次只将这 25 张图像绘制到屏幕上,因此您真的不需要使用继续 运行 的 draw() 方法,除非您调用 noLoop() 函数。此外,如果您真的只是在寻找一次执行,则可以不使用 setup() 。否则,您可以将大部分内容放在设置中,但仍然跳过使用 draw。

以下是您的任务的精简版。

PImage[] images = new PImage[25];
size(1000,1000);

for(int i = 0; i < images.length; i++) {
  images[i] = loadImage(i + ".png");   // make sure images "0.png" to "24.png" exist
}

int i = 0;
float tileCountX = 5;
float tileCountY = 5;
float stepX = width/tileCountX;
float stepY = height/tileCountY;
for (float gridY = 0; gridY < height; gridY += stepY) {
  for (float gridX = 0; gridX < width; gridX += stepX) {
    image(images[i++], gridX, gridY, stepX, stepY);
  }
}

编辑

根据您的评论,也许这就是您想要做的...

PImage[] images = new PImage[25];
size(1000,1000);

// Save images
for (int i = 0; i < 25; i++) {
  try {
    Thread.sleep(750); //sleep 750 milliseconds before continuing
  } catch(InterruptedException ex) {
    ex.printStackTrace();
  }
  stroke (random(75, 150), random (200, 256), random(50, 150));
  float distance = random(200);
  strokeWeight(1);
  line (0, distance, 200, distance);    
  save(i+".png");
}
// Load images
for(int i = 0; i < images.length; i++) {
  images[i] = loadImage(i + ".png");   // make sure images "0.png" to "24.png" exist
}

// Display images
int i = 0;
float tileCountX = 5;
float tileCountY = 5;
float stepX = width/tileCountX;
float stepY = height/tileCountY;
for (float gridY = 0; gridY < height; gridY += stepY) {
  for (float gridX = 0; gridX < width; gridX += stepX) {
    image(images[i++], gridX, gridY, stepX, stepY);
  }
}