にっき
2006/05/19 17:30:14
いろいろないろ2
前回のあるごりずむをぷろぐらむにするとこんなかんじかにう?
別にどの言語でもおっけぃだけど今回は使いたいとこにあわせてphpで・・・
っていうかから〜こ〜どを出力するんだからろ〜かるおんり〜で使うにはびみょ〜なものにう(´ω`;【壁
引数は
こんなかんじにう(・x・。【壁
実際は倍ぐらいおまけがついてたりするのはまた別のおはなしにう(´ω`;【壁
別にどの言語でもおっけぃだけど今回は使いたいとこにあわせてphpで・・・
っていうかから〜こ〜どを出力するんだからろ〜かるおんり〜で使うにはびみょ〜なものにう(´ω`;【壁
function str_to_colorcode(
$str,
$range = array(
'h' => array('base' => 0,'lim' => 360),
's' => array('base' => 0,'lim' => 100),
'v' => array('base' => 0,'lim' => 100)),
$salt = 0)
{
if(!isset($str))
return flase;
static $tarr = array(
0 => array('r' => 'v','g' => 'k','b' => 'm'),
1 => array('r' => 'n','g' => 'v','b' => 'm'),
2 => array('r' => 'm','g' => 'v','b' => 'k'),
3 => array('r' => 'm','g' => 'n','b' => 'v'),
4 => array('r' => 'k','g' => 'm','b' => 'v'),
5 => array('r' => 'v','g' => 'm','b' => 'n'));
$str = sha1($str . $salt);
$s = ($range['s']['base'] + abs(hexdec(substr($str,10,10)) % $range['s']['lim'])) * .01;
$v = ($range['v']['base'] + abs(hexdec(substr($str,20,10)) % $range['v']['lim'])) * 2.55;
if($s == 0)
$c = array('r' => $v,'g' => $v,'b' => $v);
else
{
$h = $range['h']['base'] + abs(hexdec(substr($str, 0,10)) % $range['h']['lim']);
$i = floor($h / 60);
$f = $h / 60 - $i;
$arr = array(
'v' => $v,
'm' => $v * (1 - $s),
'n' => $v * (1 - $s * $f),
'k' => $v * (1 - $s * (1 - $f))
);
$c = array('r' => $arr[$tarr[$i]['r']],'g' => $arr[$tarr[$i]['g']],'b' => $arr[$tarr[$i]['b']]);
}
return sprintf('#%02x%02x%02x',floor($c['r']),floor($c['g']),floor($c['b']));
}
引数は
$str : 対象になる文字列
$range : HSVの各要素の基準と範囲を入れた配列
$range['h']['base'] : 色相(H)の基準を0 〜 359で
$range['h']['lim'] : 色相(H)の範囲を0以上&基準との合計が360以下で
$range['s']['base'] : 彩度(S)の基準を0 〜 100で
$range['s']['lim'] : 彩度(S)の範囲を0以上&基準との合計が101以下で
$range['v']['base'] : 明度(V)の基準を0 〜 100で
$range['v']['lim'] : 明度(V)の範囲を0以上&基準との合計が101以下で
$salt : 味付け用の引数
こんなかんじにう(・x・。【壁
実際は倍ぐらいおまけがついてたりするのはまた別のおはなしにう(´ω`;【壁
こめんと
投稿された内容の著作権はこめんとの投稿者に帰属するっぽいです☆また,現在 IE6 以下で Sleipnir,Lunascape,Donut じゃないゆ〜ざえ〜じぇんとからの描き込みを制限してますです☆
該当しちゃうかたはてきとうにゆ〜ざえ〜じぇんとを偽装しちゃってくださいです(´ω`;【みかん