Convert from One Colour Space to Another, Print a Ready-to-Paste Modern 'CSS' Syntax

Provides a comprehensive 'API' for colour conversion between popular colour spaces ('RGB', 'HSL', 'OKLab', 'OKLch', 'hex', and named colours) along with clean, modern 'CSS' Color Level 4 syntax output. Integrates seamlessly into 'Shiny' and 'Quarto' workflows. Includes nearest colour name lookup powered by a curated database of over 30,000 colour names. 'OKLab'/'OKLCh' colour spaces are described in Ottosson (2020) < https://bottosson.github.io/posts/oklab/>. 'CSS' Color Level 4 syntax follows the W3C specification < https://www.w3.org/TR/css-color-4/>.


colourspace colourspace hex logo

Technically speaking, we're dealing with color systems, not spaces. But I couldn't pass up such a great name. 🚀

CRAN R-CMD-check ORCID

Main Functionality

Convert colours between spaces (hex, RGB, HSL, OKLab, OKLch) and generate modern ready-to-paste CSS syntax.

Installation

install.packages("colourspace")

Who is this for?

Anyone doing awesome Shiny apps or Quarto dashboards that wants to spice things up with better colors, or any UI/UX/Web professional that wants to convert from one colour space to another, or produce a modern CSS syntax programmatically for any color out there. 🎨

Quick examples

library(colourspace)

# Convert hex to RGB
hex_to_rgb("#ff5733")
#>   r   g   b 
#> 255  87  51

# Get modern CSS output (oklch is the default)
to_css("#ff5733")
#> [1] "oklch(68.0325% 0.21 33.6745)"

# With transparency
to_css(c("coral", "teal"), alpha = 0.8)
#> [1] "oklch(73.5085% 0.1680 40.2249 / 0.8)" "oklch(54.3125% 0.0927 194.8078 / 0.8)"

# Reverse lookup: hex to colour name
hex_to_name("#c93f38")
#> [1] "100 Mph"

# Fallback to nearest named colour (default behaviour)
hex_to_name("#a1b2c3")
#> Warning: Fallback to nearest named colour for 1 colour(s).
#> [1] "Blue Pot"

# Disable fallback to get NA for unknown colours
hex_to_name("#a1b2c3", fallback = "none")
#> [1] NA

# Low level function (great usecase for applying different spaces!)
convert_colourspace(value = "ffffff", from = "hex", to = "name")
#> [1] "white"

Colour spaces

Space Description
hex #rrggbb or #rrggbbaa
rgb Red, Green, Blue (0–255)
hsl Hue (0–360), Saturation, Lightness (0–100)
oklab Perceptually uniform Lab (L: 0–1, a/b: ±0.4)
oklch Polar OKLab (L: 0–1, Chroma ≥0, Hue: 0–360)
name Colour name from 31k+ database

License

MIT License. See LICENSE.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("colourspace")

0.1.1 by Yann Cohen, 7 months ago


https://github.com/iamyannc/colourspace


Report a bug at https://github.com/iamyannc/colourspace/issues


Browse source code at https://github.com/cran/colourspace


Authors: Yann Cohen [aut, cre]


Documentation:   PDF Manual  


MIT + file LICENSE license


Imports farver, RANN

Suggests testthat


See at CRAN