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

HSVをRGBに変換する方法

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

サンプルコード

H(0〜360)、S(0〜1)、V(0〜1)を指定して、0〜255のRGB値を取得します。ここでは円柱モデルを採用しています。

PHP

<?php
function hsv2rgb ( $hsv ) {
	$h = $hsv[0] / 60 ;
	$s = $hsv[1] ;
	$v = $hsv[2] ;
	if ( $s == 0 ) return [ $v * 255, $v * 255, $v * 255 ] ;

	$i = (int) $h ;
	$f = $h - $i ;
	$v1 = $v * (1 - $s) ;
	$v2 = $v * (1 - $s * $f) ;
	$v3 = $v * (1 - $s * (1 - $f)) ;

	switch( $i ) {
		case 0 :
		case 6 :
			$rgb = [ $v, $v3, $v1 ] ;
		break ;

		case 1 :
			$rgb = [ $v2, $v, $v1 ] ;
		break ;

		case 2 :
			$rgb = [ $v1, $v, $v3 ] ;
		break ;

		case 3 :
			$rgb = [ $v1, $v2, $v ] ;
		break ;

		case 4 :
			$rgb = [ $v3, $v1, $v ] ;
		break ;

		case 5 :
			$rgb = [ $v, $v1, $v2 ] ;
		break ;
	}

	return array_map( function ( $value ) {
		return $value * 255 ;
	}, $rgb ) ;
}

hsv2rgb( [ 20.104, 0.749, 1 ] ) ;	// [ 255,128.001058,64.005 ]

デモ

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

<?php
/*** このコードは編集できます。 ***/

function hsv2rgb ( $hsv ) {
	$h = $hsv[0] / 60 ;
	$s = $hsv[1] ;
	$v = $hsv[2] ;
	if ( $s == 0 ) return [ $v * 255, $v * 255, $v * 255 ] ;

	$i = (int) $h ;
	$f = $h - $i ;
	$v1 = $v * (1 - $s) ;
	$v2 = $v * (1 - $s * $f) ;
	$v3 = $v * (1 - $s * (1 - $f)) ;

	switch( $i ) {
		case 0 :
		case 6 :
			$rgb = [ $v, $v3, $v1 ] ;
		break ;

		case 1 :
			$rgb = [ $v2, $v, $v1 ] ;
		break ;

		case 2 :
			$rgb = [ $v1, $v, $v3 ] ;
		break ;

		case 3 :
			$rgb = [ $v1, $v2, $v ] ;
		break ;

		case 4 :
			$rgb = [ $v3, $v1, $v ] ;
		break ;

		case 5 :
			$rgb = [ $v, $v1, $v2 ] ;
		break ;
	}

	return array_map( function ( $value ) {
		return $value * 255 ;
	}, $rgb ) ;
}

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