Doing it one the fly is too impractical. The algorithm are very complex and far from perfect. Better have pre-created images for different options or at least fragments of those images. All the fragment should be pre-created and tested manually, by a good artist, if you need some minimal qualify.
If you really want to take the route of combining fragments on the fly: the fragments (say, one is just the heal, another is some decorative element, etc) should be the parts on a transparent background (using ARGB color with zero alpha channel on the transparent parts. There is a number of "professional secrets" for making such imaging, in particular, making feather selection before erasing, and a lot more.
Even if everything is done "professional", the resulting image may or may not be convincing. I just hope that this cheating could look well enough for your purpose. In real-life images, re-coloring of object parts looks way more complicated then simple combination. Imaging you have some object made of two parts of leather painted using two different colors: blue and red. The read parts will show blue highlights and visa versa. If you want to change red to yellow, you will need to change the highlights on the blue parts. If you use simple combination, you cannot do it. This is extremely difficult to do in general. Unless you use something like ray tracing, which is also very difficult, you you need some quality.
So, coming back to combination approach. Of course, do it all on the server part using
. You just take images of different parts and draw it on a newly created bitmap, one on top of another. Here is how:
] (to obtain
instance to draw on a bitmap).
For drawing a bitmap on a resulting bitmap, use the methods