Earlier [Kuba noted][1] a major slowdown with code Simon Woods posted. Here is a simplified example. First a color function using two different named gradient schemes: fn = ColorData[If[# < 0.5, "CoffeeTones", "DeepSeaColors"]][#] &; Now its use to colorize a random array: Colorize[ RandomInteger[99, {100, 100}], ColorFunction -> fn ] // AbsoluteTiming ![enter image description here][2] This is conspicuously slow for such a simple operation. Interestingly this has *nothing* to do with `Colorize` or how it uses `fn`; it is inherent to `fn` itself: fn /@ RandomReal[1, 100^2] // AbsoluteTiming // First > 4.746 What's going on? [1]: http://mathematica.stackexchange.com/questions/76449/coloring-an-image-with-two-color-schemes-based-on-a-range/76471#comment207947_76463 [2]: https://i.sstatic.net/WVI84.png