There are many ways to recolor a photo in GIMP – with some being more tedious, though more accurate, than others. In this tutorial, I show you what I think is one of the simplest and yet still more accurate methods for recoloring a photo (or changing any color in a Photo). I’ll be using GIMP 2.10.22 for this tutorial, which is the latest version of GIMP at the time of this tutorial.
You can watch the video version of this tutorial below, or skip past it to read the Help Article version.
For starters, I’ll open the image I want to use for this tutorial (which you can download free from Pexels if you want to follow along). I can open a photo into GIMP by going to File>Open or by simply clicking and dragging my photo from my computer into the GIMP window (as demonstrated by the red arrows, following the green dotted path in the image above).
GIMP will often ask you if you want to “convert” the image to GIMP’s native sRGB color space, or “keep” the image’s original color profile. This part is up to you, but I tend to go with “convert.”
Once the image is open into GIMP, we can now use the “Rotate Colors” tool to recolor our image. To access this tool, go to Colors>Map>Rotate Colors.
The “Rotate Colors” dialogue contains a few colors wheels and several sliders. Near the top of the dialogue is a section titled “Source Range” (red arrow in the image above). This area allows you to choose the color range you’d like to change. The reason this tool is effective is that colors in an image are rarely, if ever, just a single color. They are usually a range of colors with various shades, saturation, and even minor variations in hue. By selecting a range of similar colors with this filter, you can effectively select variations of a single color across and image and swap those colors out with a new range of colors – thus creating a more realistic look.
You’ll notice that the color wheel inside the Source Range areas as two arrows that converge at the same point. These arrows mark the beginning and end of the color range you are selecting. You can click on either of these arrows to expand or shrink the color range you are selecting, or click in the middle of the arrows to rotate the entire range around the wheel (which essentially results in new hues being selected). In this case, I want to select the light blue colors in my image (green arrow in the image above), so I can rotate both arrows around the color wheel until I reach the area where the blue resides.
As I said before, I can also expand or shrink the range by clicking and dragging just a single arrow at a time. In this case, I want to select a smaller range closer to light blue/cyan. So, I’ll drag each individual arrow (red arrows in the image above) closer towards this color. As I do that, you’ll see we’ll get a slightly different shade of yellow hair on the model (more on why the hair is yellow right now in a moment).
These arrows each correspond to a slider on the left. So, one of the arrows corresponds to the “From” slider (red arrows in the image above), while the other corresponds to the “To” slider (green arrows in the image above). You may have noticed when I rotated the arrows around the color wheel and individually adjust each arrow inwards that these values changed to new values. So, I can change the values in these sliders by clicking and dragging the arrows in the color wheel. However, I can also change these values manually by dragging the slider with my mouse, or by middle-clicking with my mouse wheel on the numerical values and manually typing a value.
Below the sliders are three additional features – the “Clockwise” checkbox, “Invert Range” button, and “Select All” button (outlined in red in the image above).
The “Clockwise” checkbox (red arrow) changes the range of colors from inside the two arrows to outside the two arrows (green arrow). This simply changes what colors you have selected by reversing the area inside the arrows. In this example, you’ll see that instead of the model’s hair and the background being selected, now her face and skin tones are selected. I’ll uncheck this box.
The “Invert Range” button (red arrow) will reverse the direction of your color range. Right now, the colors in your color range are selected in counter-clockwise order. By reversing the order (green arrow), the result will be slightly different. In this example, the model’s hair goes from yellow to orange with this slight change. I’ll click “Invert Range” once again to revert the direction back to counter-clockwise (and restore the yellow hair).
The “Select All” button will simply select all the colors in the color wheel. This feature isn’t super useful for this tool, so I won’t go into more detail (basically, you can use the hue-saturation filter instead).
Below the “Source Range” section is the “Destination Range” (red arrow). This section is where you choose the NEW color that you want to change your old color to. Right now, because the color wheel in this section is centered on yellow (green arrow), our old colors (blue/teal) have been changed to the new colors (yellow/orange). This is why our model currently has yellowish/orange hair.
The color wheel, arrows, sliders, and checkbox/buttons for this section work the same way as they did for the Source Range section – though obviously these settings effect the new color rather than the color we’re trying to change.
So, if I wanted her new hair color to be something different than yellow, I can click and drag my mouse inside the middle of the arrows on the color wheel to reposition them. For example, if I center these arrows on the magenta section of the color wheel (red arrow), her hair will take on a pink/magenta color.
Of course, I can also expand or shrink the color range to get slightly different colors. For example, expanding the “From” arrow outwards (red arrow) introduces more blue colors, causing the final hair color to look more purple. If I bring the “To” arrow inwards (green arrow), shrinking the color range, the hair becomes a darker purple.
If I then shift this entire range over closer to the reds (red arrow), the hair now looks more like a pinkish/red color.
Below the “Destination Range” is the “Gray Handling” section. Here, you can tell GIMP what areas of your image are gray, and what you want to do with those gray areas/colors. This can be helpful in controlling any color bleeding into unwanted colors, or introduce colors into desaturated/gray areas that didn’t originally take on the new colors.
The “Gray Threshold” slider (red arrow) increases the number of colors considered gray in the image (when you drag the slider to the right), or decreases the number of colors considered gray (when you drag the slider to the left).
The “Gray Mode” is a dropdown (blue arrow) that allows you to determine what you’d like to do with the gray colors in the image. “Change to This” will change the gray colors in your “Source Range” to whatever color you select in the color wheel. “Treat as This” will change the gray colors in your “Source Range” to the corresponding color in the “Destination Range” based on the color you select on the Gray Handling color wheel.
To demonstrate how this works, I’ll hold ctrl and zoom into the photo with my mouse wheel. If I turn up the “Threshold” (blue arrow), set the “Gray Mode” dropdown (green arrow) to “Change to This,” and choose the color red on my color wheel (by simply clicking on that area with my mouse – red arrow), you’ll see that new red pixels are introduced into my image in areas I’ve designated as gray. In this particular case, the effect is not helpful because now there’s tons of red pixels in the skin tones (yellow arrow). However, there are many cases where this can be effective – so I recommend testing it out with your image.
On the other hand, if I change the Gray Mode dropdown to “Treat as This” (green arrow), then move the color in my Gray Handling color wheel to one of the colors inside the Source Area range (red arrows), you’ll see that grays will now be given the same Destination Range color that the corresponding Source Range color gets (in this case, teal is given a purplish color – blue arrow in the image above – so those pixels in the skin tones now become purple – yellow arrow). This also doesn’t look great for this particular image, so I’m simply going to bring the threshold slider back down to 0 and change the “Hue” and “Saturation” sliders to 0.
Note that the Hue and Saturation sliders provide you with a manually method for selecting a color (hue) in the color wheel and the intensity of that color (saturation).
I’ll make some minor adjustments to my Source and Destination Ranges, then click OK (red arrow) to apply the effect.