poor performance - loadImage
in
Programming Questions
•
2 years ago
Hi all,
I'm having a problem with a playback speed of my program. Basically the purpose is to go through the folders, seek image sequences and preview them in a grid like layout. The problem I'm having is that I'm unable to playback more then dozen sequences at the same time due to a poor performance - my guess it is either loadImage function or use of arrayList. The core of the program takes place in the draw function which I think was striped down to bare minimum. I was wondering if there is any chance to improve it?
At the moment I'm using arrayLists to store paths to images because each sequence has a different length. I also don't want to load them upfront to save up some memory.
Thanks for help,
Kuba
- // Layout
- int inRow = 5;
- int canvasx = 640;
- int canvasy = 480;
- int resx = int(floor(canvasx/inRow));
- float ratio = (640/480.0);
- int resy = floor(resx/ratio);
- //
- int clips;
- PImage im;
- ArrayList tempArrayList;
- ArrayList folders = new ArrayList();
- ArrayList [] sorted;
- int sec = 0;
- void setup() {
- size(canvasx, canvasy, P2D);
- //frameRate(24);
- // sets the root folder to look for sequences
- File rootFile = new File("path/toThe/rootFolder");
- Node rootNode = new Node(rootFile);
- rootNode.printList();
- println("TotalFolders "+folderList.size());
- // Remove Null ArrayLists from folderList
- for (int i=0; i<folderList.size(); i++) {
- tempArrayList=(ArrayList)folderList.get(i);
- if (tempArrayList.size() != 0) {
- Collections.sort(tempArrayList);
- folders.add(tempArrayList);
- }
- }
- println("ImageFolders"+folders.size());
- clips = folders.size();
- //clips = 20; //limits the number to check the performance
- }
- void draw() {
- background(0);
- for (int i=0; i<clips; i++) {
- tempArrayList=(ArrayList)folders.get(i);
- sec=((int)(millis()/30));
- im = loadImage(tempArrayList.get(sec%((tempArrayList.size()))).toString());
- //im.resize(100,100);
- image(im, width/inRow*(i%inRow), height/inRow*(floor(i/inRow)), resx, resy);
- //println(frameRate);
- }
- }
1