在处理中显示随机图像
show random image on Processing
我对处理和编程真的很菜鸟,我不知道如何随机显示我的图像。
我正在使用 PImage 名称 img0、img1、img2 加载设置中的图像,然后
image("img" + random(3), 0, 0);
但它不起作用,因为处理等待 PImage 参数,而字符串加数字不是。
而且我确信肯定有比以下更好的方法:
int randomNumber = random(3);
if(randomNumber == 0 ){
image(img0,0,0);
}
if(randomNumber == 1 ){
image(img1,0,0);
}
if(randomNumber == 2 ){
image(img2,0,0);
}
但是我还没有找到。
有什么想法吗?
谢谢!
您可以使用 HashMap
创建从 String
键到 PImage
值的映射。像这样:
HashMap<String, PImage> imageMap = new HashMap<String, PImage>();
imageMap.put("image1", image1);
imageMap.put("image2", image2);
然后要从 String
键获得 PImage
,您需要调用 get()
函数:
PImage image1 = imageMap.get("image1");
您可以在 the reference 中找到更多信息。
顺便说一下,这一行不会编译:
int randomNumber = random(3);
random()
函数returns一个float
值。您不能将 float
值存储在 int
变量中。您必须使用 int()
函数对其进行转换:
int randomNumber = int(random(3));
如果您仍然不能让它工作,请 post 一个 MCVE 来演示问题。祝你好运。
除了 Kevin 的出色回答之外,您还可以使用数组来存储加载的 PImage。
这是一个粗略的例子(当然你需要调整图片的路径):
// total number of images
int numImages = 3;
// an array of images
PImage[] images = new PImage[num];
int randomNumber;
void setup(){
//TODO correct sketch size
size(300,300);
// initialize images array (loading each one)
for(int i = 0 ; i < numImages; i++){
// TODO correct path to images
images[i] = loadImage("img"+(i)+".png");
}
}
void draw(){
background(0);
//render the most recently selected random index image
image(images[randomNumber]);
//instructions
text("click to randomize",10,15);
}
// change the random number on click (draw() would look chaotic/hard to debug)
void mousePressed(){
// pick a random number and cast the floating point value return to integer needed as in images array index
randomNumber = (int)random(numImages);
}
我对处理和编程真的很菜鸟,我不知道如何随机显示我的图像。
我正在使用 PImage 名称 img0、img1、img2 加载设置中的图像,然后
image("img" + random(3), 0, 0);
但它不起作用,因为处理等待 PImage 参数,而字符串加数字不是。
而且我确信肯定有比以下更好的方法:
int randomNumber = random(3);
if(randomNumber == 0 ){
image(img0,0,0);
}
if(randomNumber == 1 ){
image(img1,0,0);
}
if(randomNumber == 2 ){
image(img2,0,0);
}
但是我还没有找到。
有什么想法吗? 谢谢!
您可以使用 HashMap
创建从 String
键到 PImage
值的映射。像这样:
HashMap<String, PImage> imageMap = new HashMap<String, PImage>();
imageMap.put("image1", image1);
imageMap.put("image2", image2);
然后要从 String
键获得 PImage
,您需要调用 get()
函数:
PImage image1 = imageMap.get("image1");
您可以在 the reference 中找到更多信息。
顺便说一下,这一行不会编译:
int randomNumber = random(3);
random()
函数returns一个float
值。您不能将 float
值存储在 int
变量中。您必须使用 int()
函数对其进行转换:
int randomNumber = int(random(3));
如果您仍然不能让它工作,请 post 一个 MCVE 来演示问题。祝你好运。
除了 Kevin 的出色回答之外,您还可以使用数组来存储加载的 PImage。
这是一个粗略的例子(当然你需要调整图片的路径):
// total number of images
int numImages = 3;
// an array of images
PImage[] images = new PImage[num];
int randomNumber;
void setup(){
//TODO correct sketch size
size(300,300);
// initialize images array (loading each one)
for(int i = 0 ; i < numImages; i++){
// TODO correct path to images
images[i] = loadImage("img"+(i)+".png");
}
}
void draw(){
background(0);
//render the most recently selected random index image
image(images[randomNumber]);
//instructions
text("click to randomize",10,15);
}
// change the random number on click (draw() would look chaotic/hard to debug)
void mousePressed(){
// pick a random number and cast the floating point value return to integer needed as in images array index
randomNumber = (int)random(numImages);
}