Функция R для преобразования цветов RGBA в HEX - PullRequest
1 голос
/ 01 апреля 2020

Я ищу в , которая может преобразовать цвет в шестнадцатеричный, например rgba(240, 177, 76, 0.80). Существует множество функций, доступных от в шестнадцатеричное преобразование, например plotrix::rgb.to.hex(), но не для RGBA.

Действительно ценю любой указатель.

1 Ответ

1 голос
/ 01 апреля 2020

Эта топика c уже обсуждалась Конвертировать RGBA в HEX однако мне не известен пакет R, который предлагает готовую к использованию функцию.

Вы можете конвертировать RGBA в RGB:

Так как это зависит от цвета фона пикселя ( Преобразовать цвет RGBA в RGB ), вам необходимо определить цвет фона. color_RGBA - ваш цвет RGBA, background_RGB - цвет фона. Например, вы можете взять col2rgb("white") как background_RGB.

rgba2rgb <- function(background_RGB, color_RGBA){

  # get alpha
  alpha=color_RGBA[4]

  # get new color  
  new_col=matrix(c(
    (1 - alpha) * background_RGB[1] + alpha * color_RGBA[1],
    (1 - alpha) * background_RGB[2] + alpha * color_RGBA[2],
    (1 - alpha) * background_RGB[3] + alpha * color_RGBA[3]),
    nrow=3,ncol=1,dimnames=list(c("red","green","blue"))
  )
  return(new_col)
}

, а затем преобразовать RGB в HEX:

rgb2hex <- function(x) rgb(x[1], x[2], x[3], maxColorValue = 255)
...