ok, this thread is old, but still, maybe an answer would help some peoples...
so, the value you have with rgbs[i], after bufferedImage.getRGB(0, 0, w, h, rgbs, 0, w)
IS the color, it's the conversion from it's hexadecimal value.
The RGB system is based on three nombers, ([0-255], [0-255], [0-255]) or (red color, green color, blue color)
so, the number returned by rgbs[i] is -(256^2 * (256-red) + 256 * (256-green) + (256-blue)) ... a little bit complicated, i'm not CERTAIN of these numbers...
but still, IF YOU WANT TO GET YOUR COLORS:
-red = (256^3 + rgbs[i]) / 256^2
-green = ((256^3 + rgbs[i]) / 256) % 256
-blue = (256^3 + rgbs[i]) % 256
-------
explanations, "256^3 + rgbs[i]" is used to convert the negative number to a positive one.
the "/ 256^2" with the red color is to keep only the first of the 3 hexadecimals numbers, example: 256 == FF, so 256^3 == ff ff ff, so 256^3 / 256^2 == ff,ff ff so the two last "ff" are removed since it's an Int, you only keep "ff = 256 = your color value"
well... i'm not too god at explanations sorry, but i hope you can now understand this rgb system a little bit more.
-Dargonesti.