2014-09-24 31 views
0

我正在讀取Python中的某些值。這些值的格式很奇怪。該文件說:如何在Python中轉換此RGB格式

Color is represented by a single value from 0 to 8355711. The RGB(r,g,b) function calculates 
((R*127 x 2^16) + (G*127 x 2^8) + B*127), where R, G and B are values between 0.00 and 1.00 

遜,紅色有16712965我很想值要懂得「解壓」的值作爲一個元組或什麼,但我與數學掙扎。如果這是不可能的,一種將該值轉換爲rgb值的方式會很棒。請幫忙!謝謝

+0

您是否嘗試分割? – 2014-09-24 04:52:43

+0

是的,但我不知道如何將一個整數分成三個... – Startec 2014-09-24 05:05:07

+1

它所做的只是將它轉換爲十六進制(乘以2的冪與移位相同)。嘗試谷歌搜索在十六進制和rgb之間來回轉換,它覆蓋了所有的地方,包括所以,像這裏http://stackoverflow.com/questions/214359/converting-hex-color-to-rgb-and-vice-versa – 2014-09-24 05:09:13

回答

1

你有錯誤的文字

  • 紅色= 16712965 = 0xFF0505h
  • 超出你的要求限制的範圍8355711 = 7F7F7Fh

那麼究竟什麼是您的源和目的地顏色格式?

  • (7位使用)填充到最常見的是每8位ř,G,B信道打包到32比特值
  • 你看起來像每通道8比特?? bit value

你究竟想要什麼?

  • double R,G,B值範圍< 0.0,1.0> from int col?
  • 不是在C蟒編碼器++它看起來像這樣:

    // 8(7 used) bit per channel 
    double R=double(col>>16)/127.0; 
    double G=double(col>> 8)/127.0; 
    double B=double(col )/127.0; 
    
    // 8 bit per channel 
    double R=double(col>>16)/255.0; 
    double G=double(col>> 8)/255.0; 
    double B=double(col )/255.0; 
    
  • x>>n意味着n位

  • 它是相同的值x的算術位右移(填充零以MSB位) as x/(2^n)

如果你想要不同的轉換,那麼你必須指定它。

+0

感謝您收集錯誤。不知道這是怎麼發生的。你完美地解釋了它。 – Startec 2014-09-25 01:48:11

1

注意公式中的2^8和2^16,這表明你可以使用類似於C中右移的東西。將輸入數除以2^8 = 256相當於8位右移。這裏需要注意的另一點是你的R,G,B輸出值是實數。所以你想在計算過程中使用float函數。

c = 8355711 
print 'input colour', c 

# conversion to RGB format 
B = float(c % 256)/127.0 
c = c/256 
G = float(c % 256)/127.0 
c = c/256 
R = float(c % 256)/127.0 

print R, G, B 

# reverse calculation for verifying the result 
colour = int((R*127 * 65536) + (G*127 * 256) + B*127) 
print colour 
+0

這似乎非常接近,但是,我不確定我的數學是否正確:例如,當我嘗試使用以下結果: 'c = 8912743 B = float(c%256)/127.0 c = (c%256)/127.0 c = c/256 R = float(c%256)/ 127。0 打印(R,G,B) 顏色= INT((R * 127 * 65536)+(G * 127 * 256)+ B * 127) 印刷(彩色)' 相同的值是不返回(但非常接近)。類似地,RGB值看起來在0 - 1之外(1到3之間也許?) – Startec 2014-09-24 06:09:52

+0

@Startec與您給出的信息「8912743」應該是無效的顏色,唯一的方式是產生'G = 2.0079'。 – 2014-09-24 11:31:49

相關問題