Ciao a tutti,
ho un problema..sto realizzando un progettino per la compressione di file in formato GIF e voglio creare una tavolozza di colori in base al numero di pixel che hanno un determinato colore nell'immagine che processo. In pratica analizzo tutti i pixel e conto i pixel con una certa tonalità. salvo tutti questi dati in una TreeMap con indice il colore e valore il numero di pixel con quel colore (entrambi i valori sono interi). C'è un modo per ordinare questa lista in base al valore e non alla chiave..oppure c'è un altro oggetto diverso da quello che sto usando che permette questo cioè che abbia un entry univoca a cui è associato un valore che posso ordinare.
Questo è il codice che ho creato e che ordina la TreeMap in base alla key..
Dimenticavo di dire che uso ImageJ...codice:public static ImageProcessor CompressRGBAdaptive(ImageProcessor ip,int nx,int ny,int pal,int numCol) { int i,numPixel; int array[] = new int[4]; TreeMap<Integer,Integer> palette = new TreeMap<Integer,Integer>(); for(int x = 0;x<nx;x++) { for(int y=0;y<ny;y++) { array = ip.getPixel(x,y,array); i=(array[0] << 16)+(array[1] << 8)+(array[2]); if(palette.containsKey(i)) { numPixel = palette.get(i); numPixel++; palette.put(i,numPixel); } else palette.put(i,1); } } IJ.write("Dimensione palette: "+palette.size()); int cont=0,numPix = nx*ny; IJ.write("numPix: "+numPix); Vector<Integer> v = new Vector<Integer>(palette.keySet()); // Display (sorted) TreeMap. for (ListIterator<Integer> e = v.listIterator(); e.hasNext();) { Integer key = e.next(); Integer val = palette.get(key); IJ.write("Colore: " + key + " Numero Pixel: " + val); } return ip; }
ciao e grazie..

Rispondi quotando