getColor is indeed a performance killer, as it involves copying data from the GPU to CPU. Once cached, this isn't so bad, but if you are doing things like rendering to offscreen graphics, the data will be flushed and will need to be re-copied every frame. And it won't work with rotated images.

I am trying to create a fast pixel-perfect function. The only thing making it ineffective is grabbing the pixels from the Image. I have made a piss solution, by associating every image with an int[][] array(that represent all the pixels in the image). This array is initiated at loading screen. The results performance wise is fantastic. But it turns my code into a mess, killing the readability. And its not working with rotation.

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org