将十进制BGR颜色转换为单个RGB十进制值

时间:2013-08-16 21:12:32

标签: ruby-on-rails ruby fullcalendar

我有一个数据库表,它将颜色值存储为BGR(蓝色,绿色,红色),并且要在完整日历中使用,需要将它们格式化为RGB(十进制,十进制,十进制)字符串。有没有更好的方法然后转换为十六进制,然后拆分,然后回到十进制?

示例BGR颜色:13369599

color = ("%06x" % 13369599).to_s.split(/(..)(..)(..)/)

=> ["", "cc", "00", "ff"]

rgb_value = "rgb( " << color[3].hex.to_s << "," << color[2].hex.to_s << "," << color[1].hex.to_s << ");"

期望的输出

rgb_value = rgb( 255,00,204);

1 个答案:

答案 0 :(得分:1)

我的第一种语言之一是C,以下是一个相当微不足道的宏。

color = ((color & 0xff0000) >> 16) | (color & 0x00ff00) | ((color & 0x0000ff) << 16)

将其置于bgr_to_rgb方法中并忘记它。无需覆盖#to_s#hex

要从BGR代码中获取各个R,G,B值,请使用

red = color & 0x0000ff
green = color & 0x00ff00
blue = color & 0xff0000