if (img.getRGB(x, y) != 0)
Jag tror du behöver vara försiktig med konstanter här. Tex har
java.awt.Color.WHITE.getRGB()
värdet -1
Detta beror på att dess binära representation är 32 ettor, och med tvåkomplement räknas MSB (most significant bit) negativt. 111....11 blir därför
-2^32 + ∑(i = 31...0) 2^i = -1.
Du borde också notera beskrivningen av BufferedImage metod getRGB():
Citat:
Returns the RGB value representing the color in the default sRGB ColorModel. (Bits 24-31 are alpha, 16-23 are red, 8-15 are green, 0-7 are blue).
Pixlar utan genomskinlighet har alpha-värdet 255. Vad din kodrad
if (img.getRGB(x, y) != 0)
letar efter är alltså genomskinliga svarta pixlar.