【发布时间】:2018-05-07 15:41:56
【问题描述】:
请帮助我。我想在不知道数据名的情况下将多个图像加载到这个处理草图中。这样我就可以随时将.png 图像放入数据文件夹,程序会自动将它们加载进去。我在一些论坛中搜索过,但除了一些我已经使用过的代码外,没有找到任何东西,但它没有运行正常。
程序一开始它会给我一个NullPointerExceptionimage();
这是控制台输出:
4096
D:\Program Files\processing-3.3.7\PROJECTS\Blendertutorial\data
[0] "1.png"
[1] "2.png"
[2] "3.png"
[3] "4.png"
[4] "5.png"
[5] "6.png"
[6] "7.png"
另外为什么folder.list(); 输出这么大的数字?我那里只有 7 张图片...
import java.io.File;
String fileExtension = ".png";
java.io.File folder = new java.io.File(sketchPath("/PROJECTS/Blendertutorial/data"));
java.io.FilenameFilter extfilter = new java.io.FilenameFilter() {
boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(fileExtension);
}
};
PImage images;
String[] imageNames;
int i=0;
long folderInhalt = folder.length();
void setup(){
size(500,500);
println(folder.length());
println(folder);
printArray(imageNames);
imageNames = folder.list(extfilter);
}
void draw(){
if(mousePressed){
images = loadImage(folder+"/"+imageNames[0]);
println(images);
println(imageNames[i]);
delay(200);
i++;
}
image(images,0,0); //NULL POINTER EXCEPTION!
}
【问题讨论】:
-
与您的问题没有直接关系,但您不应该像这样在
draw()函数中加载图像。而是从setup()函数加载它们。否则,您将每秒加载 60 次图像,这将导致您的计算机着火。 -
谢谢。我只在这个例子中这样做是因为我调用了 delay() 并且因为我不希望它在需要时“预加载”bu load。
-
问题是鼠标会被按下超过一帧,所以你不断地重新加载图像。至少你应该缓存你的图片,这样你就不会多次重新加载它们,但很可能你应该在设置过程中将它们全部加载。
标签: java image processing loadimage