The colorspaces used by Colors are defined in ColorTypes. Briefly, the defined spaces are:
-
Red-Green-Blue spaces:
RGB
,BGR
,XRGB
,RGBX
,RGB24
, plus transparent versionsARGB
,RGBA
,ABGR
,BGRA
, andARGB32
. -
HSV
,HSL
,HSI
, plus all 6 transparent variants (AHSV
,HSVA
,AHSL
,HSLA
,AHSI
,HSIA
)
using Colors # hide
using Main: CrossSectionalCharts # hide
CrossSectionalCharts.crosssection(HSV) # hide
CrossSectionalCharts.crosssection(HSL) # hide
CrossSectionalCharts.crosssection(HSI) # hide
-
XYZ
,xyY
,LMS
and all 6 transparent variants -
Lab
,Luv
,LCHab
,LCHuv
and all 8 transparent variants
CrossSectionalCharts.crosssection(Lab) # hide
CrossSectionalCharts.crosssection(Luv) # hide
CrossSectionalCharts.crosssection(LCHab) # hide
CrossSectionalCharts.crosssection(LCHuv) # hide
-
DIN99
,DIN99d
,DIN99o
and all 6 transparent variants -
Storage formats
YIQ
,YCbCr
and their transparent variants
CrossSectionalCharts.crosssection(YIQ) # hide
CrossSectionalCharts.crosssection(YCbCr) # hide
Gray
,Gray24
, and the transparent variantsAGray
,GrayA
, andAGray32
.
You can parse any CSS color specification
with the exception of currentColor
. You can construct colors from strings
using the @colorant_str
macro and the parse
function.
julia> using Colors
julia> colorant"red" # named color
RGB{N0f8}(1.0,0.0,0.0)
julia> parse(Colorant, "DeepSkyBlue") # color names are case-insensitive
RGB{N0f8}(0.0,0.749,1.0)
julia> colorant"#FF0000" # 6-digit hex notation
RGB{N0f8}(1.0,0.0,0.0)
julia> colorant"#f00" # 3-digit hex notation
RGB{N0f8}(1.0,0.0,0.0)
julia> colorant"rgb(255,0,0)" # rgb() notation with integers in [0, 255]
RGB{N0f8}(1.0,0.0,0.0)
julia> colorant"rgba(255,0,0,0.6)" # with alpha in [0, 1]
RGBA{N0f8}(1.0,0.0,0.0,0.6)
julia> colorant"rgba(100%,80%,0.0%,0.6)" # with percentages
RGBA{N0f8}(1.0,0.8,0.0,0.6)
julia> parse(ARGB, "rgba(255,0,0,0.6)") # you can specify the return type
ARGB{N0f8}(1.0,0.0,0.0,0.6)
julia> colorant"hsl(120, 100%, 25%)" # hsl() notation
HSL{Float32}(120.0f0,1.0f0,0.25f0)
julia> colorant"hsla(120, 100%, 25%, 60%)" # hsla() notation
HSLA{Float32}(120.0f0,1.0f0,0.25f0,0.6f0)
julia> colorant"transparent" # transparent "black"
RGBA{N0f8}(0.0,0.0,0.0,0.0)
All CSS/SVG named colors are supported, in addition to X11 named colors, when their definitions do not clash with SVG. You can find all names and their color swatches in Named Colors page.
When writing functions the colorant"red"
version is preferred, because the slow step runs when the code is parsed (i.e., during compilation rather than run-time).
The element types of the return types depend on the colorspaces, i.e. the hsl()
and hsla()
notations return HSL
/HSLA
colors with Float32
elements, and
other notations return RGB
/RGBA
colors with N0f8
elements. The result
colors can be converted to RGB{N0f16}
(for example) using:
julia> using FixedPointNumbers
julia> RGB{N0f16}(colorant"indianred")
RGB{N0f16}(0.80392,0.36078,0.36078)
or
julia> parse(RGB{N0f16}, "indianred")
RGB{N0f16}(0.80392,0.36078,0.36078)
You can convert colors to hexadecimal strings using the hex
function.
Note that the conversion result does not have the prefix "#"
.
julia> col = colorant"#C0FFEE"
RGB{N0f8}(0.753,1.0,0.933)
julia> hex(col)
"C0FFEE"
Colors.jl allows you to convert from one colorspace to another using the convert
function.
For example:
julia> convert(RGB, HSL(270, 0.5, 0.5)) # without the element type
RGB{Float64}(0.5,0.25,0.75)
julia> convert(RGB{N0f8}, HSL(270, 0.5, 0.5)) # with the element type
RGB{N0f8}(0.502,0.251,0.749)
Depending on the source and destination colorspace, this may not be perfectly lossless.
Colors.jl allows you to convert colors to transparent or opaque types.
julia> col = colorant"yellow"
RGB{N0f8}(1.0,1.0,0.0)
julia> transparent = alphacolor(col, 0.5) # or coloralpha(col)
ARGB{N0f8}(1.0,1.0,0.0,0.502)
julia> opaque = color(transparent)
RGB{N0f8}(1.0,1.0,0.0)
@colorant_str
parse
hex
normalize_hue
mean_hue