As Mr Lister just said, it is easy to automate the calculation with any programming language :
- Separate your two colors into their 3 color numbers for Red, Green, Blue : (r1,g1,b1) and (r2,g2,b2).
- For example #15293E, #012549 become (“15”, “29”, “3E”), (“01”, “25”, “49”)
- Convert each color string into an integer, specifying explicitly that you are parsing a hexadecimal-based representation of a number.
- For example (“15”, “29”, “3E”) becomes (21, 41, 62)
- Calculate the average (r’,g’,b’) = ( (r1+r2)/2, (g1+g2)/2, (b1+b2)/2 ).
- For example ( (21+1)/2, (41+37)/2, (62+73)/2) = (11, 39, 67)
- Convert them again to strings , specifying explicitly that you are generating two-digit hexadecimal representations (pad with a zero when necessary).
- For example (11, 39, 67) -> (“0B”, “27”, “43”)
- Concatenate a hash character followed by the 3 strings
- For example (“0B”, “27”, “43”) -> “#0B2743”
Edit : Implementation is not “very easy” as I initially stated. I took the time to write the code in several languages on Programming-Idioms .