R HEX naar RGB Converter

Stel dat ik deze kleur heb in HEX-waarden (inclusief alfa):

x <- "#FF2400FF"

Is er een net pakket om HEX-waarden om te zetten naar RGB-waarden in R? Of een eenvoudig stukje code om dat te doen?

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

EDIT: Dit is de tegenovergestelde manier van RGB naar HEX Converter vraag


Antwoord 1, Autoriteit 100%

Op basis van de reeds gegeven opmerkingen kunt u deze code gebruiken:

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

Kijk echter naar uw gevraagde resultaat, het lijkt erop dat u de alfa-waarde hebt als eerste hex-nummer in uw x– dus u moet een substring maken:

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

Antwoord 2, Autoriteit 11%

Voorbeeld 1

U kunt de RGB-waarden krijgen als een 1-dimensionaal array

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

output

     [,1]
red    255
green   36
blue     0

Voorbeeld 2

U kunt de RODE , GROENE , en Blue -waarden respectievelijk als gehele getallen

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

Uitvoer

255
36
0

Voorbeeld 3

Je kunt de alphawaarde ook als integerkrijgen door simpelweg alpha=TRUE

toe te voegen

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

Uitvoer

255
36
0
255

Voorbeeld 4

Je kunt alle waarden als vectorkrijgen door de array te typen met as.vector()

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

Uitvoer

[1] 255  36   0 255

Antwoord 3

Met deze code worden HEX-kleurenreeksen gesplitst en geconverteerd naar gehele getallen:

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

Antwoord 4

Zoals @cath heeft opgemerkt, bestaat het een functie om dat te doen:

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

Other episodes