2015-10-29 81 views
1
private int[] colors = new int[6 * 6 * 6]; 

...的Java處理的色彩搭配像素的工作原理

int index = 0; 
for(int r = 0 ; r < 6 ; r++){ 
    for(int g = 0 ; g < 6 ; g++){ 
     for(int b = 0 ; b < 6 ; b++){ 
      int rr = r * 255/5; 
      int gg = g * 255/5; 
      int bb = b * 255/5; 

      colors[index++] = rr << 16 | gg << 8 | b; 
     } 
    } 
} 

...

public static int getColor(int color1, int color2, int color3, int color4){ 
    return(get(color4) << 24 + get(color3) << 16 + get(color2) << 8 + get(color1)); 
} 

private static int get(int color){ 
    if(color < 0) return 255; 
    int r = color/100 % 10; 
    int g = color/10 % 10; 
    int b = color/1 % 10; 

    return r * 36 + g * 6 + b; 
} 

我'試圖解決什麼這裏發生英寸但我無法弄清楚。有人能解釋我嗎?

回答

0

前兩位代碼似乎使用一個數組來存儲顏色作爲基數256數字,但只允許rgb組件是51的倍數。該數組在代碼的其餘部分中未使用。

get方法似乎將以3位數基數10數字給出的顏色轉換爲基數6數字。

的第三個代碼塊似乎採取四種顏色(給定爲3位基10數),將它們轉換爲基6(出於某些原因),並將它們打包成單個int

代碼的前半部分似乎不涉及到下半部分。