I don’t know an automatic way to adjust colors in Gimp, buy you can do it manually with curves. Open the good image, use color picker to see the colors you want to match (activate its info window).
For example, I noticed that in the good image:
- chair purple is approximately R=140, G=110, B=140
- leaves are approximately R=110, G=150, B=110
And in the bad image:
- chair is R=55, G=90, B=190
- leaves are R=20, G=155, B=180
So there is too much blue, almost correct amount of green, and way to little red.
As a simple correction, I open the curves tool, select Red, channel, and let the curve pass through points (20,110) and (55,140) (because Red=20 should become R=110, and Red=55 should become Red=140). The image already looks much better now…
The next step, I select Blue channel, and let its curve pass through point (180,110) (Blue=180 is reduced to Blue=110) and through the second correction point (190,140):
Finally, the green curve can pass through (90,110) and (155, 150), but I don’t like the result, and didn’t apply the green curve. Look at what you are doing, also don’t hesitate to move curve points a little and look at preview (I’d move red curve down a little, in fact, try it yourself).
Corrected image (blind two-point curve adjustments in Red and Blue channels):
It is not exactly the same as the target image, but much closer than initially. Target image was:
Consider also taking more color samples and more shades of the same color into considerations (in this example: the wall, dish, ceramics, shadows in the leaves). They may help to construct better curves
Update: being curious, how far this method can go, I wrote a small Python script, which takes colors from the first image, calculates best curves by averaging target values and adjusts the second image.