SYNCERのロゴ
アイキャッチ画像

RGBをHSLに変換する方法

JavaScriptを使って、カラーコードのRGBをHSLに変換します。

サンプルコード

0〜255のRGB値を指定して、H(0〜360)、S(0-1)、L(0-1)の値を取得します。

JavaScript

function rgb2hsl ( rgb ) {
	var r = rgb[0] / 255 ;
	var g = rgb[1] / 255 ;
	var b = rgb[2] / 255 ;

	var max = Math.max( r, g, b ) ;
	var min = Math.min( r, g, b ) ;
	var diff = max - min ;

	var h = 0 ;
	var l = (max + min) / 2 ;
	var s = diff / ( 1 - ( Math.abs( max + min - 1 ) ) ) ;

	switch( min ) {
		case max :
			h = 0 ;
		break ;

		case r :
			h = (60 * ((b - g) / diff)) + 180 ;
		break ;

		case g :
			h = (60 * ((r - b) / diff)) + 300 ;
		break ;

		case b :
			h = (60 * ((g - r) / diff)) + 60 ;
		break ;
	}

	return [ h, s, l ] ;
}

rgb2hsl( [ 255, 128, 64 ] ) ;	// [ 20.104, 1, 0.625 ]

デモ

好きなRGB値を指定して、HSL値を確認してみて下さい。

function rgb2hsv ( rgb ) {
	var r = rgb[0] / 255 ;
	var g = rgb[1] / 255 ;
	var b = rgb[2] / 255 ;

	var max = Math.max( r, g, b ) ;
	var min = Math.min( r, g, b ) ;
	var diff = max - min ;

	var h = 0 ;

	switch( min ) {
		case max :
			h = 0 ;
		break ;

		case r :
			h = (60 * ((b - g) / diff)) + 180 ;
		break ;

		case g :
			h = (60 * ((r - b) / diff)) + 300 ;
		break ;

		case b :
			h = (60 * ((g - r) / diff)) + 60 ;
		break ;
	}

	var s = max == 0 ? 0 : diff / max ;
	var v = max ;

	return [ h, s, v ] ;
}

var a = rgb2hsv( [ 255, 128, 64 ] ) ;
a =
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年9月13日 (水)
コンテンツを公開しました。