Skip to content

Instantly share code, notes, and snippets.

@PegasisForever
Created December 22, 2021 23:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PegasisForever/833cfb2df33bc7b8a408683ff6936683 to your computer and use it in GitHub Desktop.
Save PegasisForever/833cfb2df33bc7b8a408683ff6936683 to your computer and use it in GitHub Desktop.
Average two colors using square root, https://sighack.com/post/averaging-rgb-colors-the-right-way
function averageColor(a, b) {
let ar = parseInt(a.substr(0, 2), 16)
ar *= ar
let ag = parseInt(a.substr(2, 2), 16)
ag *= ag
let ab = parseInt(a.substr(4, 2), 16)
ab *= ab
let br = parseInt(b.substr(0, 2), 16)
br *= br
let bg = parseInt(b.substr(2, 2), 16)
bg *= bg
let bb = parseInt(b.substr(4, 2), 16)
bb *= bb
return `#${Math.round(Math.sqrt((ar + br) / 2)).toString(16).padStart(2, '0')}${Math.round(Math.sqrt((ag + bg) / 2)).toString(16).padStart(2, '0')}${Math.round(Math.sqrt((ab + bb) / 2)).toString(16).padStart(2, '0')}`
}
console.log(averageColor('f1f5f9', 'e2e8f0'))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment