使用处理 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);
}
}
我想在这里完成两个任务,我让它们在两个处理文件中分开工作,但我希望它们在一个文件中工作。我有部分工作,但我需要帮助的两个部分是:
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);
}
}