R十六进制转RGB颜色的转换器

8
假设我有这个颜色的十六进制值(包括alpha):
x <- "#FF2400FF"
是否有一个整洁的R软件包可以将十六进制值转换为RGB值?或者有一个简单的代码片段可以实现这个功能?
[#1] c("36 0 255")
编辑:这是RGB to Hex converter问题的相反方式。

2
http://www.astrostatistics.psu.edu/su07/R/html/grDevices/html/col2rgb.html - loki
5
请问您需要将 ?col2rgb?rgb 翻译成相反的语言?如果是这样,可以提供原始语言和目标语言吗?感谢您的协助。 - Cath
洛基,不是那样的。恰恰相反。 - juanmah
谢谢@cath。这就是我在寻找的东西。 - juanmah
4个回答

11

根据已经提供的评论,您可以使用此代码:

x <- "#FF2400FF"
paste(as.vector(col2rgb(x)), collapse = " ")
#> [1] "255 36 0"

然而,根据您所请求的结果,似乎您将alpha值作为第一个十六进制数放在了x中,因此您需要创建一个子字符串:

然而,根据您所请求的结果,似乎您将 alpha 值作为第一个十六进制数放在了 x 中,因此您需要创建一个子字符串:

x <- "#FF2400FF"
paste(as.vector(col2rgb(paste0("#", substr(x, 4, 10)))), collapse = " ")
#> [1] "36 0 255"

1

例子 1

你可以将 RGB 值作为一个 一维 数组 获取。

hex.rgba.color <- "#FF2400FF"
rgb.array <- col2rgb( hex.rgba.color )
print( rgb.array )

输出

      [,1]
red    255
green   36
blue     0

例子2

您可以分别获取红色绿色蓝色的值,它们都是整数

hex.rgba.color <- "#FF2400FF"
rgb.array <- col2rgb( hex.rgba.color )
message( rgb.array[1] ) # red
message( rgb.array[2] ) # green
message( rgb.array[3] ) # blue

输出

255
36
0

例子3

您还可以通过添加alpha=TRUE来获得alpha值的整数表示。

hex.rgba.color <- "#FF2400FF"
rgba.array <- col2rgb( hex.rgba.color, alpha=TRUE )
message( rgba.array[1] ) # red
message( rgba.array[2] ) # green
message( rgba.array[3] ) # blue
message( rgba.array[4] ) # alpha

输出

255
36
0
255

例子 4

您可以通过将数组强制转换为 as.vector() 来获取所有值作为向量

hex.rgba.color <- "#FF2400FF"
rgba.vector <- as.vector( col2rgb( hex.rgba.color, alpha=TRUE ) )
print( rgba.vector )

输出

[1] 255  36   0 255

0
用这段代码,HEX颜色字符串被分割并转换为整数:
for (color in heat.colors(10)) {
  hex_splitted_color = c(paste('0x', substr(color, 4, 5), sep = ''),
                         paste('0x', substr(color, 6, 7), sep = ''),
                         paste('0x', substr(color, 8, 9), sep = ''))
  print(strtoi(hex_splitted_color))
}
[1]   0   0 255
[1]  36   0 255
[1]  73   0 255
[1] 109   0 255
[1] 146   0 255
[1] 182   0 255
[1] 219   0 255
[1] 255   0 255
[1] 255  64 255
[1] 255 191 255

0

正如 @Cath 所评论的那样,有一个函数可以做到这一点:

col2rgb(heat.colors(10))

      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
red    255  255  255  255  255  255  255  255  255   255
green    0   36   73  109  146  182  219  255  255   255
blue     0    0    0    0    0    0    0    0   64   191

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接