2013-08-16 113 views
0

我有一個數據庫表,它將顏色值存儲爲BGR(藍色,綠色,紅色),並且在完整日曆中使用時需要將它們合成爲RGB(十進制,十進制,十進制)字符串。有沒有更好的方法,然後轉換爲十六進制,然後分裂,然後回到十進制?將十進制BGR顏色轉換爲單獨的RGB十進制值

例如BGR的顏色:13369599

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

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

期望的輸出

rgb_value = rgb(255,00,204);

回答

1

我的第一種語言之一是C,下面是一個相當微不足道的宏。

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

把這個放在bgr_to_rgb方法中,忘掉它。沒有必要達到#to_s#hex

要獲得單獨的R,G,從BGR代碼B值,使用

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

的作品獲得RGB十進制值,然而我最終所尋找的是個別RGB值。 – danmanstx

+0

然後不要或者他們不要。看例子。 –

相關問題