有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用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 {     
 }
  }

共 (1) 个答案

  1. # 1 楼答案

    您试图合并两个项目,但没有删除不使用的代码。由于一次只在屏幕上绘制这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);
      }
    }