De eerste succesvolle methode die ik vond om hetzelfde te doen was het gebruik van ImageMagick, maar dan met een andere operator dan de eerder gesuggereerde –separate/-swap.
De verschillende operator is ofwel -recolor of -color-matrix, afhankelijk van de ImageMagick versie.
Specifiek omdat ik een “master color” kende van het originele beeld (groen, in jouw geval en in het mijne) en ik de “master color” kende in het gewenste resultaatbeeld (blauw, in jouw geval, oranje in het mijne), heb ik ImageMagick’ -recolor/color-matrix optie een transformatiematrix gegeven met waarden die de verschillen in elk van de RGB-kanalen weerspiegelden.
Bijvoorbeeld, in mijn geval was de volledig groene kleur R:141 G:198 B:63 en ik wilde het veranderen in R:231 G:159 B:70. De rest van de kleuren wilde gelijkwaardig veranderd worden.
Dus dat betekent dat ik de R-waarde van de nieuwe pixels 231/141ste van de huidige rode waarde wilde hebben. Groene waarden moesten 159/198e van de huidige waarden zijn. En blauwe waarden 63/70ste van de huidige waarden.
Dus:
convert input.png -recolor "1.638297872 0 0 0 0.803030303 0 0 0 1.111111111" output.png
of
convert input.png -color-matrix "1.638297872 0 0 0 0.803030303 0 0 0 1.111111111" output.png
of
Dit leek in een flits te werken na veel tijd te hebben geworsteld met Gimp/plugins en paint.net/plugins.