make.rgb
位於 grDevices
包(package)。 說明
這些函數指定在 convertColor
中使用的顏色空間。
用法
make.rgb(red, green, blue, name = NULL, white = "D65",
gamma = 2.2)
colorConverter(toXYZ, fromXYZ, name, white = NULL, vectorized = FALSE)
參數
red,green,blue |
RGB 原色的色度(xy 或 xyY) |
name |
色彩空間的名稱 |
white |
指定參考白色的字符串(請參閱“詳細信息”。) |
gamma |
顯示伽瑪(非線性)。正數或字符串 |
fromXYZ |
從 XYZ 三刺激坐標轉換到該空間的函數 |
toXYZ |
從此空間轉換為 XYZ 三刺激坐標的函數。 |
vectorized |
|
細節
RGB 顏色空間由紅、綠、藍三原色的色度定義。這些以 xyY 坐標中長度為 2 或 3 的向量給出(不使用 Y 分量,可以省略)。色度是相對於參考白色定義的,參考白色必須是 CIE 標準光源之一:"A"、"B"、"C"、"D50"、"D55"、"D60"、"E"(通常為 "D65")。
顯示伽瑪最常見的是 2.2,盡管 Apple RGB 使用 1.8。 sRGB 標準指定了一個更複雜的函數,接近 2.2 的 gamma; gamma = "sRGB"
使用此函數。
除了 RGB 之外的色彩空間可以通過 XYZ 三色坐標的轉換來直接指定。這些函數應該有兩個參數。第一個是給出一種顏色坐標的向量。第二個參數是參考白色。如果顏色空間的定義中包含特定的參考白色(對於 RGB 空間),則應忽略第二個參數,並且可能是 ...
。
從 R 3.6.0 開始,內置顏色轉換器與 convertColor
一起被矢量化,以便在一次調用中處理三列顏色矩陣,而不是通過 apply
逐行處理。為了保持向後兼容性,colorConverter
將 fromXYZ
和 toXYZ
包裝在 apply
循環中,以防它們也不支持矩陣輸入。如果您使用的 fromXYZ
和 toXYZ
函數一次在整個顏色矩陣上正確運行,而不是逐行運行,則可以設置 vectorized=TRUE
以提高性能。
值
colorConverter
類的對象
例子
(pal <- make.rgb(red = c(0.6400, 0.3300),
green = c(0.2900, 0.6000),
blue = c(0.1500, 0.0600),
name = "PAL/SECAM RGB"))
## converter for sRGB in #rrggbb format
hexcolor <- colorConverter(toXYZ = function(hex, ...) {
rgb <- t(col2rgb(hex))/255
colorspaces$sRGB$toXYZ(rgb, ...) },
fromXYZ = function(xyz, ...) {
rgb <- colorspaces$sRGB$fromXYZ(xyz, ...)
rgb <- round(rgb, 5)
if (min(rgb) < 0 || max(rgb) > 1)
as.character(NA)
else rgb(rgb[1], rgb[2], rgb[3])},
white = "D65", name = "#rrggbb")
(cols <- t(col2rgb(palette())))
zapsmall(luv <- convertColor(cols, from = "sRGB", to = "Luv", scale.in = 255))
(hex <- convertColor(luv, from = "Luv", to = hexcolor, scale.out = NULL))
## must make hex a matrix before using it
(cc <- round(convertColor(as.matrix(hex), from = hexcolor, to = "sRGB",
scale.in = NULL, scale.out = 255)))
stopifnot(cc == cols)
## Internally vectorized version of hexcolor, notice the use
## of `vectorized = TRUE`:
hexcolorv <- colorConverter(toXYZ = function(hex, ...) {
rgb <- t(col2rgb(hex))/255
colorspaces$sRGB$toXYZ(rgb, ...) },
fromXYZ = function(xyz, ...) {
rgb <- colorspaces$sRGB$fromXYZ(xyz, ...)
rgb <- round(rgb, 5)
oob <- pmin(rgb[,1],rgb[,2],rgb[,3]) < 0 |
pmax(rgb[,1],rgb[,2],rgb[,3]) > 0
res <- rep(NA_character_, nrow(rgb))
res[!oob] <- rgb(rgb[!oob,,drop=FALSE])},
white = "D65", name = "#rrggbb",
vectorized=TRUE)
(ccv <- round(convertColor(as.matrix(hex), from = hexcolor, to = "sRGB",
scale.in = NULL, scale.out = 255)))
stopifnot(ccv == cols)
參考
Conversion algorithms from http://www.brucelindbloom.com.
也可以看看
相關用法
- R msgWindow 操縱窗口
- R axisTicks 計算漂亮的軸刻度
- R hcl HCL 顏色規格
- R quartzFonts 石英字體
- R as.graphicsAnnot 強製圖形注釋對象
- R xyTable (x,y) 點的重數,例如,對於向日葵圖
- R dev.interactive 當前圖形設備是否具有交互性?
- R chull 計算一組點的凸包
- R convertColor 在色彩空間之間轉換
- R X11Fonts X11 字體
- R plotmath R 中的數學注釋
- R dev.capture 將設備輸出捕獲為光柵圖像
- R dev.size 查找設備表麵的尺寸
- R pdf.options 設置/查看 pdf 參數默認值的輔助函數
- R densCols 平滑密度圖的顏色
- R windows Windows 圖形設備
- R rgb RGB 顏色規格
- R check.options 設置帶有一致性檢查的選項
- R dev.flush 保持或刷新屏幕圖形設備上的輸出
- R n2mfrow 根據繪圖數計算默認“mfrow”
- R dev 控製多個設備
- R hsv HSV 顏色規格
- R postscript PostScript 圖形
- R pdf PDF圖形設備
- R xyz.coords 提取繪圖結構
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Create colour spaces。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。