Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I would like to set an individual pixel in Slick (i.e Image.setPixel(x, y, r, b, g)) but I can't figure out how.

There is an Image.setPixel function but it doesn't take x and y coordinates. Any ideas?

share|improve this question
up vote 4 down vote accepted

You're in luck.

In Slick2D, Image has a function called getGraphics, which will return you a Slick2D graphics context.

While the graphics context does not have a setPixel function, it does have a fillRect function that you can use to set a single pixel.

Graphics g = img.getGraphics();

I just tried this out myself, which is how I discovered the importance of the flush call. Also check out the example in the Slick2D src folder.

share|improve this answer
A bit slow (when you are trying to set an 1000x1000 sized image with a different colour for each) but it works! Thanks! :) – Darestium Mar 10 '12 at 0:13
In that case, I recommend only flushing once. (Amused by obious bathroom reference) – PlayDeezGames Mar 10 '12 at 13:43
ahaha! lol, suprisingly I didn't even relate flush with a bathroom until now. – Darestium Mar 10 '12 at 22:22

If you really want to make this from an Image object then you must:

  • Get the texture with img.getTexture()
  • Retrieve the inherent pixel data with texture.getTextureData()
  • Parse the byte-array until you reach the pixel (x, y)
  • Change the RGB value of this pixel
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.