Domanda

Sto cercando di collegare attraverso una bitmap e determinare se ogni pixel è chiara o più scura di grigio utilizzando getPixel (). Il problema è che io non sono sicuro come dire se il valore restituito da getPixel () è più scuro o più chiaro rispetto grigio.

grigio neutro è circa 0x808080 o R: 127, G: 127, B: 127. Come avrei bisogno di modificare il codice sottostante per determinare con precisione questo?

for (var dx:int=0; dx < objectWidth; dx++)
{  
    for (var dy:int=0; dy < objectHeight; dy++)
    {
         if (testBmd.getPixel(dx, dy) > GRAY)
         {
             trace("Lighter than gray!");
         } else {
             trace("Darker than gray!");
         }
    }
}
È stato utile?

Soluzione

Per estendere di Adam risposta un po 'più, si potrebbe generare un valore di luminanza utilizzando una funzione come questa ...

function luminance(myRGB:int):int {
//returns a luminance value between 0 and 255
var R:int = (myRGB / 65536) % 256;
var G:int = (myRGB / 256) % 256;
var B:int = myRGB % 256;
return ((0.3*R)+(0.59*G)+(0.11*B));
}

Poi si può verificare la soglia grigio al 50% in questo modo:

if (luminance(testBmd.getPixel(dx, dy)) > 127)

Altri suggerimenti

La luminanza è la risposta - la matematica necessaria e la spiegazione qui:

http://www.scantips.com/lumin.html

si sa come continuare:)

Modifica:

in LiveDocs ( LiveDocs - BitmapData - getPixel32 () ), si può vedere ad esempio, come ottenere r, g, b, valori da getPixel32 () valore di ritorno. Forse è possibile utilizzare i:]

Inoltre, di Richard risposta sembra che già fa ciò che è necessario, anche se se si combinano con l'esempio dall'alto - voilla - ti sei preso un confronto luminanza:]

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top