Pierwszą udaną metodą, która odniosła sukces, było użycie ImageMagick, ale z innym operatorem niż wcześniejszy –separate/-swap.
Inny operator to -recolor lub -color-matrix, w zależności od wersji ImageMagick.
W szczególności, ponieważ znałem “kolor wzorcowy” oryginalnego obrazu (zielony, w twoim przypadku i moim) i znałem “kolor wzorcowy” w pożądanym obrazie wynikowym (niebieski, w twoim przypadku, pomarańczowy w moim), dałem opcję ImageMagick’ -recolor/-color-matrix - matrycę transformacji z wartościami, które odzwierciedlały różnice w każdym z kanałów RGB.
Na przykład, w moim przypadku, w pełni zielony kolor to R:141 G:198 B:63 i chciałem go zmienić na R:231 G:159 B:70. Reszta kolorów chciała być zmieniona w taki sam sposób.
Tak więc chciałem, aby wartość R nowych pikseli wynosiła 231/141ths od obecnej wartości czerwieni. Wartość zieleni miała wynosić 159/198th od aktualnej wartości. A wartość niebieska miała wynosić 63/70 części bieżących wartości.
Więc:
convert input.png -recolor "1.638297872 0 0 0 0.803030303 0 0 0 1.111111111" output.png
lub
convert input.png -color-matrix "1.638297872 0 0 0 0.803030303 0 0 0 1.111111111" output.png
lub
Wydawało się to działać w mgnieniu oka po bezowocnym spędzaniu dużej ilości czasu na zmaganiach z Gimpami/ wtyczkami i paint.net/pluginsami.