C RGB格式與HBS格式顏色互轉

2021-05-26 05:24:53 字數 1981 閱讀 3206

**如下: 

rgb->hsb[float型別版本]

/// /// hsb用float資料型別表示   

///

static void rgb2hsb(int r, int g, int b, out float hue, out float sat, out float bri)

else

sat = (float)(maxval - minval) / sum;

}

//hue

if (maxval == minval)

else

if (g == maxval)

if (b == maxval)

if (hue > 360.0f)

}

}

rgb->hsb[int版本]

/// /// hsb用int資料型別表示,同winform中的colordialog中hsb的表示   

///

static void rgb2hsb(int r, int g, int b, out int hue, out int sat, out int bri)

if (sat > 240)

if (bri > 240)

}

hsb->rgb

/// /// 傳入的hsb用int型表示,如果用float型表示,可將下面的轉換成float過程去掉   

///

static void hsb2rgb(int hue, int sat, int bri, out int r, out int g, out int b)

else

}

if (sat > 240)

else

}

if (bri > 240)

else

}

float h = hue / 239.0f;

float s = sat / 240.0f;

float l = bri / 240.0f;

//end:hsb轉換為float

float red = 0, green = 0, blue = 0;

float d1, d2;

if (l == 0)

else

else

;

float rgb = new float ;

for (int i = 0; i < 3; i++)

if (d3[i] > 1.0f)

if (6.0f * d3[i] < 1.0f)

else

else

else

}

}

}

red = rgb[0];

green = rgb[1];

blue = rgb[2];

}

}

red = 255.0f * red;

green = 255.0f * green;

blue = 255.0f * blue;

if (red < 1)

else

}

if (green < 1)

else

}

if (blue < 1)

else

}

r = (int)(red + 0.5);

g = (int)(green + 0.5);

b = (int)(blue + 0.5);

}

YUV顏色編碼格式

yuv 顏色編碼採用的是明亮度和色度來指定畫素的顏色,而色度又定義了顏色的兩個方面 色調和飽和度。其中 其中 其歷史 是歐洲的電視系統採用的一種顏色編碼方式,主要是為了讓訊號支援新的彩色電視,但也繼續支援黑白電視。如果是黑白電視,只使用 y 通道訊號就足夠。yuv色彩編碼格式由其色度抽樣方式 儲存方...

C 顏色格式轉換小結

做專案的過程中要調整介面的顏色,但是顏色的格式又多種多樣,這裡面的格式轉換就成了乙個問題了,現把我用過的轉換方法小結一下 1 123456 轉 system.drawing.color 顏色 16進製制轉成rgb 設定16進製制顏色 ffffff public static system.drawi...

rar格式與zip格式

區別一 zip 的安裝比較大,並僅僅有英文版 漢化包 rar有官方的簡體中文版,並且安裝很小,不足一兆 區別二 winrar 的壓縮率較高,而zip 的壓縮率更低 區別三 zip 支援的格式很多,但已經較老,不大流行 rar支援格式也很多,並且還是流行的 區別四 zip 僅僅能夠壓縮成zip 格式,...