Is there a way to select an area in GIMP, then fill every part of the selected that is a certain distance or more from the edges of the selection other than doing it manually?

So a black circle like this: Black Circle

Would/could be turn(ed) into a black circle with a dark gray circle on the inside: Black Circle & Dark Gray Circle

Which could be performed multiple times, turning it into this: Black Circle, Dark Gray Circle, & Light Gray Circle

1 Answer 1


For one inner edge on any shape

  • create a selection on your object (if you created the object with a selection you can reuse it)
  • Select>Invert
  • Select>To path
  • Edit>Stroke path in "Line" mode. The width should be twice the one you want (one half is cut off by the selection).

If the object is on a transparent background this can also be done (a bit more accurately) using the ofn-outline-layer script.

For several edges on arbitrary shapes

If it's arbitrary shapes, continue with the process above, selecting the inner shape. You may have to Select>Grow your selection by one pixel each time to avoid a tiny gap. The advantage of using a path to draw the border is that you can keep sharp angles (see the "Join" option in Stroke path), so your inner shape still looks like the outer one (otherwise the inner shapes will turn into an nondescript blob).

For concentric rings

If it is just plain rings, the good way is to stack decreasing rings. Position the center using two guides, and starting from this, create an Ellipse selection by forcing the aspect ratio to 1:1 and using the Expand from center option. In other words think of you image as this:

enter image description here

enter image description here

  • Thanks! This is exactly what I was looking for.
    – qrani
    Nov 5, 2019 at 12:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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