Finding the right foreground color for a random background color
This is basically a reminder for myself, but perhaps other people might find that interesting as well: I’m currently working on the creation of a legend, that shows colors with a short token on them. These colors are user defined, so I don’t know at configuration time, what they are and I don’t want the user to set the foreground color.
So I need the right foreground color (white or black) for the background color. I googled a bit for this. You need the human perceived luminance of the background color to determine, if it’s light or dark and set the foreground color to the opposite of this.
I found, that the common formula to determine the perceived luminance is this:
R * 0.299 + G * 0.587 + B * 0.114
If you use RGB-values with a maximum value of 255 you get a luminance value with a maximum value of 255, telling you it’s a very light color.
I used Stoyan Stefanov’s rgbcolor-library for javascript (found here: [[http://www.phpied.com/rgb-color-parser-in-javascript/]]) to properly work with this in javascript:
backgroundColor = new RGBColor(userBackground);
foregroundColor = new RGBColor('black');
if (backgroundColor.ok) {
// Calculate foreground color
if (0.299 * backgroundColor.r +
0.587 * backgroundColor.g +
0.114 * backgroundColor.b <= 128) {
// Background is dark, so foreground should be light
foregroundColor = new RGBColor('white');
}
}
Calendar
M | D | M | D | F | S | S |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Archive
- Januar 2024
- Dezember 2023
- April 2021
- März 2021
- September 2020
- Dezember 2019
- November 2019
- Oktober 2019
- Juli 2019
- Juni 2019
- Mai 2019
- April 2019
- März 2019
- September 2018
- August 2018
- Juli 2018
- März 2018
- Januar 2018
- Dezember 2017
- September 2017
- März 2017
- Februar 2017
- Januar 2017
- August 2016
- Mai 2016
- Dezember 2015
- November 2015
- August 2015
- März 2015
- Dezember 2014
- September 2014
- August 2014
- Juli 2014
- Februar 2014
- Oktober 2013
- September 2013
- August 2013
- Juli 2013
- Juni 2013
- Mai 2013
- April 2013
- November 2012
- Oktober 2012
- September 2012
- August 2012
- Juni 2012
- Mai 2012
- März 2012
- Februar 2012
- Januar 2012
- November 2011
- Juli 2011
- Juni 2011
- März 2011
- Februar 2011
- Januar 2011
- Dezember 2010
- November 2010
- April 2010
- Februar 2010