R: Decode RGB hex-strings into colour values

decode_colour {farver} | R Documentation

## Decode RGB hex-strings into colour values

### Description

This is a version of `grDevices::col2rgb()` that returns the colour values in the standard form expected by farver (matrix with a row per colour). As with `encode_colour()` it can do colour conversion on the fly, meaning that you can decode a hex string directly into any of the supported colour spaces.

### Usage

    decode_colour(colour, alpha = FALSE, to = "rgb", white = "D65",
      na_value = NA)

### Arguments

`colour` | A character vector of hex-encoded values or a valid colour name as given in `grDevices::colours()`.
`alpha` | If `TRUE` the alpha channel will be returned as well (scaled between 0 and 1). If no alpha channel exists in the colour it will be assumed 1. If `FALSE` any alpha channel is ignored.
`to` | The output colour space. Allowed values are: `"cmy"`, `"cmyk"`, `"hsl"`, `"hsb"`, `"hsv"`, `"lab"` (CIE L*ab), `"hunterlab"` (Hunter Lab), `"lch"` (CIE Lch(ab) / polarLAB), `"luv"`, `"rgb"` (sRGB), `"xyz"`, `"yxy"` (CIE xyY), or `"hcl"` (CIE Lch(uv) / polarLuv)
`white` | The white reference of the output colour space. Will only have an effect for relative colour spaces such as Lab and luv. Any value accepted by `as_white_ref()` allowed.
`na_value` | A valid colour string or `NA` to use when `colour` contains `NA` elements. The general approach in farver is to carry `NA` values over, but if you want to mimick `col2rgb()` you should set `na_value = '#ffffff00'`, i.e. treat `NA` as transparent white.

### Value

A numeric matrix with a row for each element in `colour` and either 3, 4, or 5 columns depending on the value of `alpha` and `to`.

### Handling of non-finite and out of bounds values

`NA`, `NaN`, `-Inf`, and `Inf` are treated as invalid input and will result in `NA` values for the colour. If a given colourspace has finite bounds in some of their channels, the input will be capped before conversion, and the output will be capped before returning, so that both input and output colours are valid colours in their respective space. This means that converting back and forth between two colourspaces may result in a change in the colour if the gamut of one of the spaces is less than the other.

### See Also

Other encoding and decoding functions: `encode_colour`, `manip_channel`

### Examples

    # basic use
    decode_colour(c('#43e1f6', 'steelblue', '#67ce9fe4'))

    # Return alpha as well (no alpha value is interpreted as 1)
    decode_colour(c('#43e1f6', 'steelblue', '#67ce9fe4'), alpha = TRUE)

    # Decode directly into specific colour space
    decode_colour(c('#43e1f6', 'steelblue', '#67ce9fe4'), to = 'lch')

[Package farver version 2.0.2 Index]