0

我有一个数据库表,它将颜色值存储为 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);

4

1 回答 1

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
于 2013-08-16T21:33:13.350 回答