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..
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;
  }
Dimenticavo di dire che uso ImageJ...

ciao e grazie..