You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.4 KiB
59 lines
1.4 KiB
const hex2Rgb = function(color) {
|
|
let reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/
|
|
color = color.toLowerCase()
|
|
if (color.length == 9) color = color.slice(0, 7)
|
|
if (reg.test(color)) {
|
|
if (color.length === 4) {
|
|
let colorNew = "#"
|
|
for (let i = 1; i < 4; i += 1) {
|
|
colorNew += color.slice(i, i + 1).concat(color.slice(i, i + 1))
|
|
}
|
|
color = colorNew
|
|
}
|
|
let colorChange = []
|
|
for (let i = 1; i < 7; i += 2) {
|
|
colorChange.push(parseInt("0x" + color.slice(i, i + 2)))
|
|
}
|
|
return colorChange
|
|
} else {
|
|
if (color.includes("rgb")) {
|
|
color = color
|
|
.replace(/(rgba|rgb)/, "")
|
|
.replace("(", "")
|
|
.replace(")", "")
|
|
|
|
if (color.includes(",")) {
|
|
return color
|
|
.split(",")
|
|
.map(item => item * 1)
|
|
.slice(0, 3)
|
|
} else {
|
|
return [0, 0, 0]
|
|
}
|
|
} else {
|
|
return [0, 0, 0]
|
|
}
|
|
}
|
|
}
|
|
|
|
const isTextDeepColor = function(backgroundRgbArr = [255, 255, 255]) {
|
|
if (
|
|
!(
|
|
backgroundRgbArr instanceof Array &&
|
|
backgroundRgbArr.length === 3 &&
|
|
backgroundRgbArr.every(item => item >= 0 && item <= 255)
|
|
)
|
|
)
|
|
return false
|
|
|
|
const grayLevel =
|
|
backgroundRgbArr[0] * 0.299 +
|
|
backgroundRgbArr[1] * 0.587 +
|
|
backgroundRgbArr[2] * 0.114
|
|
return grayLevel >= 192
|
|
}
|
|
|
|
module.exports = {
|
|
hex2Rgb,
|
|
isTextDeepColor
|
|
}
|