Autore Topic: Problema getPixel e colori sbagliati  (Letto 1054 volte)

Offline Alien94

  • Nuovo arrivato
  • *
  • Post: 31
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy SII
Problema getPixel e colori sbagliati
« il: 30 Marzo 2012, 16:02:09 CEST »
0
Buongiorno.
Ho un problema con la funzione getPixel.
Ho un'immagine 15x15 in cui ogni pixel ha un colore che puo essere rosso, blu, giallo o bianco.

Con due cicli for disegno la mappa perche, per ogni pixel che esamino, se è rosso disegno un blocco di muro, se blu un altro, se giallo un altro e se bianco un blocco di strada.

Tutto questo l'ho già realizzato in java puro.
Ora che voglio portarlo su android però ho riscontrato un problema, poichè la funzione getRGB di java non è presente nell'SDK di android.
In sostituzione c'è la funzione getPixel, la quale però mi restituisce colori tutti diversi per ogni pixel, anche se in realtà sono uguali.

A cosa può essere dovuto?
Grazie in anticipo!


Ecco la parte di codice:
Codice (Java): [Seleziona]
                this.w = lvl.getWidth();
                this.h = lvl.getHeight();
                this.map = new Tile[this.h][this.w];
               
                for(int x=0; x<this.w; x++) {
                        for(int y=0; y<this.h; y++) {
                                if(lvl.getPixel(x, y) == Color.WHITE) {
                                        this.map[y][x] = new PavementTile(x, y, 1);
                                }
                                else if(lvl.getPixel(x, y) == Color.RED) {
                                        this.map[y][x] = new PavementDestroyedTile(x, y, 2);
                                }
                                else if(lvl.getPixel(x, y) == Color.BLUE) {
                                        this.map[y][x] = new PortalTile(x, y, 3);
                                }
                                else if(lvl.getPixel(x, y) == Color.YELLOW) {
                                        this.map[y][x] = new DestroyableTile(x, y, 4);
                                }
                                else {
                                        this.map[y][x] = new PavementTile(x, y, 1);
                                }
                        }
                }

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problema getPixel e colori sbagliati
« Risposta #1 il: 30 Marzo 2012, 16:29:47 CEST »
0
Hai provato a fare qualche log? Che valori ti escono?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Alien94

  • Nuovo arrivato
  • *
  • Post: 31
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy SII
Re:Problema getPixel e colori sbagliati
« Risposta #2 il: 30 Marzo 2012, 16:44:12 CEST »
0
Si, escono tutti valori simili a quelli esatti ma tutti sbagliati comunque!

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problema getPixel e colori sbagliati
« Risposta #3 il: 30 Marzo 2012, 16:52:28 CEST »
0
Esempio?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline al_chiappone

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Samsung GT-S5570
  • Play Store ID:
    Stefano Benamati
  • Sistema operativo:
    Ubuntu
Re:Problema getPixel e colori sbagliati
« Risposta #4 il: 30 Marzo 2012, 18:26:57 CEST »
0
Credi si tratti di una diversa interpretazione dei valori RGBA dei pixel. Ogni pixel è descritto da una terna o quadrupla di valori interi che sono:

R = componente rossa
G = componente verde
B = componente blu
A = trasparenza

In alcuni sistemi il colore del pixel è memorizzato come RGBA, in altri ARGB ed in altri ancora GBRA. La funzione getpixel ritorna un intero a 32 bit con i valori dei colori espressi in ARGB, magari l'immagine che hai creato li memorizza in una forma diversa.

Ti consiglio di creare un'immagine completamente blu e stampare in esadecimale il valore di un pixel per vedere come è memorizzato. Per essere giusto dovresti avere come risultato FF0000FF. Per essere sicuro fai la prova anche con rosso e verde:

rosso = FFFF0000
verde = FF00FF00
blu = FF0000FF
 giallo = FFFFFF00

Indipendentemente dal sistema di codifica basta che tu memorizzi il valore che assume il pixel per ogni colore che ti interessa ed usare queste nuove costanti per fare i tuoi confronti.

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Problema getPixel e colori sbagliati
« Risposta #5 il: 30 Marzo 2012, 20:34:38 CEST »
0
La mia (poca) esperienza mi dice che non c'é la possibilità che siano diversi, sono incompatibili di default!!!!

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit

Offline LucaP84

  • Utente junior
  • **
  • Post: 50
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Seven
Re:Problema getPixel e colori sbagliati
« Risposta #7 il: 29 Maggio 2012, 16:14:22 CEST »
0
Scusate ho sbagliato a postare.

Offline LucaP84

  • Utente junior
  • **
  • Post: 50
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Seven
Re:Problema getPixel e colori sbagliati
« Risposta #8 il: 29 Maggio 2012, 16:22:55 CEST »
0
Non ho capito bene il tuo problema, per aiutarti posso dirti leggiti i metodi della classe COLOR.

Allora ti scrivo questo codice vediamo se può esserti di aiuto.

Color.rgb(red, green, blue);  che ritorna in numero il valore del colore, ovviamente se crei degli interi ed usi i metodi color puoi diverti il colore nelle 4 componenti ARGB.

      int cR  = Color.red(color);
   int cG = Color.green(color);
   int cB  = Color.blue(color);
   int cA = Color.alpha(color);

per il problema dei colori diversi, se usi il touch quindi i colori dal tocco dello schermo devi fare una media dei colori che ricevi dato che selezioni una zona con diverse tonalità di colore.

Più avanti potrò esserti di aiuto, su questo....cmq fammi sapere
Luca