假设我在HEX值(包括alpha)中有这种颜色:
x <- "#FF2400FF"
是否有一个整洁的包将HEX值转换为R中的RGB值?或者只需要一点点代码就可以了?
[#1] c("36 0 255")
编辑:这是RGB to Hex converter问题
的相反方式答案 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)
您可以将RGB值作为一维 数组
hex.rgba.color <- "#FF2400FF"
rgb.array <- col2rgb( hex.rgba.color )
print( rgb.array )
输出
[,1]
red 255
green 36
blue 0
您可以分别将 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
您还可以通过简单地添加alpha=TRUE
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
您可以通过使用as.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