# How to get RBG Pixel Color

## Recommended Posts

I will add this to the unofficial documentation.

```; User-defined function to get RGB pixel color
;
; How it works:
;  Get decimal color via AutoIt's PixelGetColor function
;  Convert result to a six-digit hexadecmial number
;  Take the digits in groups of two and convert back to decmial
;    to obtain the B, G, and R (respectively) color values
;
; Anyone want to post a more direct RGB function?

\$c =   PixelGetRGB(0,0);upper left pixel
MsgBox(0,"The RBG Pixel Color is", \$c & "," & \$c & "," & \$c)
Exit

; Returns an array with element1=RED, element2=GREEN, element3=BLUE
Func PixelGetRGB(\$x, \$y)
\$hex = Hex(PixelGetColor(\$x, \$y), 6)
\$r = hexToDec(StringRight(\$hex, 2)) & "|"
\$g = hexToDec(StringMid(\$hex, 3,2)) & "|"
\$b = hexToDec(StringLeft(\$hex, 2))
Return StringSplit(\$r & \$g & \$b, "|")
EndFunc

; Returns the decimal equivalent of a \$hex string like "05ff"
Func hexToDec(\$hex)
\$dec = 0;running total
\$n = StringLen(\$hex);number of digits

For \$i = 1 to \$n
\$d = StringMid(\$hex, \$i, 1);digit
Select
Case \$d >= "0" And \$d <= "9"
\$dec = \$dec + (Asc(\$d)-48) * power(16,\$n-\$i)
Case \$d >= "A" And \$d <= "G"
\$dec = \$dec + (Asc(\$d)-55) * power(16,\$n-\$i)
Case \$d >= "a" And \$d <= "g"
\$dec = \$dec + (Asc(\$d)-87) * power(16,\$n-\$i)
EndSelect
Next
Return \$dec
EndFunc

; Returns \$base raised to the power of \$exponent
Func power(\$base, \$exponent)
\$tmp = 1
For \$i = 1 to \$exponent
\$tmp = \$tmp * \$base
Next
Return \$tmp
EndFunc```

Converting RGB to decimal (for use with PixelSearch) is a bit easier

```Func rgbToDec(\$r, \$g, \$b)
return HexToDec(Hex(\$b,2) & Hex(\$g,2) & Hex(\$r,2))
EndFunc```
Edited by CyberSlug
Use Mozilla | Take a look at My Disorganized AutoIt stuff | Very very old: AutoBuilder 11 Jan 2005 prototype I need to update my sig!

## Create an account

Register a new account

• ### Recently Browsing   0 members

×

• Wiki

• Back

• #### Beta

• Git
• FAQ
×
• Create New...