【问题标题】:How can i make an output of multiple images with an for loop in processing?如何在处理中使用 for 循环输出多个图像?
【发布时间】:2019-12-08 18:15:26
【问题描述】:

我正在制作一个程序,它应该使用 loadImages(int i) 函数并排显示 10 张图像,并且输出在 void setup() 函数中,但问题是它只加载第 10 张图片而不是在那之前的其他人(1-9)。我知道这可能只是对代码的微小修改,但我不明白。提前致谢!

import java.util.Random;
Random Random = new Random(); 
PImage img;
int[] cakes = new int[10];
int W, H;

void setup() {
    for( int i=0 ;i<=cakes.length;i++){  
        img =loadImages(i);
    }
    W = img.width;
    H = img.height;
    surface.setSize(10 * W, 2 * H); 
}

void mouseClicked() {
    scramble(cakes);
} 

PImage loadImages(int i) {
    return loadImage("images/" + i + "_128x128.png");
}

void draw() {
    background(255);
    image(img, 0, 0); 
}

void scramble(int[] a) {
    for (int i = 0; i < a.length; i++) {
        int rd0 = Random.nextInt(i+1);
        int rd1 = Random.nextInt(i+1);
        int temp = a[rd0]; 
        a[rd0] = a[rd1]; 
        a[rd1] = temp; 
    }
}

【问题讨论】:

    标签: java image processing


    【解决方案1】:

    编辑:正如@Rabbid76 所指出的,避免在每次绘制循环迭代时加载图像会更好。请仔细考虑。

    您可以循环获取图像。如你所料,这只是一个小改动:

    void draw() {
      background(255);
      for (int i = 0; i < 10; i++) {
        image(loadImages(i), i*128, 0); // i * 128 to draw the image side by side, or else you'll only see the last one you draw
      }
    }
    

    玩得开心!

    【讨论】:

    • 在每一帧中加载图像是一个非常糟糕的主意!这将获得性能影响,但没有乐趣。
    • @Rabbid76 你是绝对正确的。阅读您的评论时,我几乎抹掉了这个答案,但我会因为它而让它站起来:很高兴知道我们不应该一直加载图像(尽管我会对其进行编辑以清楚地反映这一点)。
    【解决方案2】:

    你必须创建一个图像数组:

    PImage[] img = new PImage[10];
    

    将图像加载到数组中:

    void setup() {
        for( int i=0 ;i<img .length;i++){  
           img[i] = loadImages(i);
        }
    
        // [...]
    }
    

    最后绘制图像数组。例如:

    void draw() {
        background(255);
        for( int i=0 ;i < img.length; i++){ 
            image(img[i], i*W, 0);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-08-08
      • 2022-12-04
      • 2021-01-16
      • 2021-05-25
      • 1970-01-01
      • 2013-12-10
      • 1970-01-01
      • 2012-05-25
      • 2020-09-25
      相关资源
      最近更新 更多