R十六进制到RGB转换器

时间:2017-05-11 09:06:16

标签: r

假设我在HEX值(包括alpha)中有这种颜色:

x <- "#FF2400FF"

是否有一个整洁的包将HEX值转换为R中的RGB值?或者只需要一点点代码就可以了?

[#1] c("36 0 255")

编辑:这是RGB to Hex converter问题

的相反方式

4 个答案:

答案 0 :(得分:2)

根据已经给出的评论,您可以使用以下代码:

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

但是,查看您请求的结果,似乎您的x中的alpha值是第一个十六进制数字 - 所以您需要创建一个子字符串:

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

答案 1 :(得分:1)

示例1

您可以将RGB值作为一维 数组

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

输出

      [,1]
red    255
green   36
blue     0

示例2

您可以分别将 red 绿色 blue 值作为 integers

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()

对数组进行类型转换来获取所有值作为 vector
hex.rgba.color <- "#FF2400FF"
rgba.vector <- as.vector( col2rgb( hex.rgba.color, alpha=TRUE ) )
print( rgba.vector )

输出

[1] 255  36   0 255

答案 2 :(得分: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

答案 3 :(得分: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