Вы можете сделать это полностью с PIL, если вы начнете с одного готового градиентного изображения от белого к черному (которое вы сделали в другой программе), а затем используете модуль ImageChops манипулируйте этим вместе с вашим основным изображением, чтобы получить то, что вы хотите.
Например, если вы хотите перейти от красного к синему: умножьте красный на градиент, переверните градиент и умножьте синий на это, и сложите их вместе.
Если ваши изображения различаются по размеру, вы можете соответствующим образом масштабировать градиентное изображение в PIL.