r - 采用十六进制颜色并返回具有 RGB 值和可能的 alpha 通道值的命名向量的函数
问题描述
例如,该函数应该像这样工作:
# colors with no transparency
hex_values("#435690")
## red green blue
## "43" "56" "90"
如果提供的 hex-color 有一个 alpha 通道,那么函数应该像这样工作:
# colors with transparency
hex_values("#435690FF")
## red green blue alpha
## "43" "56" "90" "FF"
我正在使用正则表达式和 for 循环来编写我的函数,但仍然遇到很多问题。
任何建议/帮助表示赞赏!
解决方案
您可以使用col2rgb()
和转置结果:
t(col2rgb("#435690FF", alpha = TRUE))
red green blue alpha
[1,] 67 86 144 255
或者正如 r2evans 指出的那样,要恢复为十六进制值,请将其包装在as.hexmode()
.
t(as.hexmode(col2rgb("#435690FF", alpha = TRUE)))
red green blue alpha
[1,] "43" "56" "90" "ff"
要合并注释并将其全部包装到一个函数中:
hex_values <- function(x) {
clr <- ifelse(startsWith(x, "#"), x, paste0("#", x))
t(toupper(as.hexmode(col2rgb(clr, alpha = TRUE))))
}
hex_values(colorRampPalette(c("red", "blue"))(5))
red green blue alpha
[1,] "FF" "00" "00" "FF"
[2,] "BF" "00" "3F" "FF"
[3,] "7F" "00" "7F" "FF"
[4,] "3F" "00" "BF" "FF"
[5,] "00" "00" "FF" "FF"
推荐阅读
- amazon-web-services - 是否可以使用同一个 EC2 实例在 AWS Beanstalk 中部署多个 spring-boot 应用程序?
- xml - XSLT 转换以读取 xml 元素和值并将 xml 数据转换为名称值对
- powershell - 如何从 powershell 中的文本文件中删除一行?
- python - Python - 如何检查应用程序何时关闭?
- r - 使用 outer() 将函数向量映射到输入向量
- javascript - NodeJS 和 MongoDB “无法发布 /”
- sql - SQL 2 行成 1
- windows - 使用容器填充卷在 Windows 上的 Docker 中不起作用
- discord.js - TypeError:message.member.roles.some 不是函数
- python - psycopg2.errors.InvalidTextRepresentation