「色彩の値を256といった10進数値からFFといった16進数に変換したいなあ」と思っていたので、関数を知れべたら、
dechex()という関数を知りました。
(dexhexと最初書いて、エラーが出ました(^^;)
これを使うと、for文で0~255までループさせ、その数値を16進数に変換して、テーブルセルのバックグラウンドカラーにprintfなどで代入できて、左の図のようなことができました。
ありがたや。
色を使ったいろいろな表現を考えているので、
dechexはお世話になりそうです。
hexdec()が逆の関数で、これもそのうち使うかな。。
一応、ソースを置いておきます。
表示は右が切れてますが、コピーしたらちゃんとコピーできますね。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>dechexの応用による、色彩テーブル</title>
<style type="text/css">
table{border-collapse:collapse;}
td{width:60px;text-align:center;padding:0;}
</style>
</head>
<body>
<table>
<?php
//純色で、数値を上げていく。
for($i=0;$i<256;$i=$i+16){
$R0=sprintf ("<td bgcolor='#0%s0000'>#0%s0000</td>",dechex($i),dechex($i));
$G0=sprintf ("<td bgcolor='#000%s00'>#000%s00</td>",dechex($i),dechex($i));
$B0=sprintf ("<td bgcolor='#00000%s'>#00000%s</td>",dechex($i),dechex($i));
$R =sprintf ("<td bgcolor='#%s0000'>#%s0000</td>" ,dechex($i),dechex($i));
$G =sprintf ("<td bgcolor='#00%s00'>#00%s00</td>" ,dechex($i),dechex($i));
$B =sprintf ("<td bgcolor='#0000%s'>#0000%s</td>" ,dechex($i),dechex($i));
if($i<16){echo "<tr>".$R0.$G0.$B0."</tr>";}
else{echo "<tr>".$R,$G,$B."</tr>";}
}
//混色で、二色目の数値を上げていく。
for($i=0;$i<256;$i=$i+16){
$RG0=sprintf ("<td bgcolor='#ff0%s00'>#ff0%s00</td>",dechex($i),dechex($i));
$GB0=sprintf ("<td bgcolor='#00ff0%s'>#00ff0%s</td>",dechex($i),dechex($i));
$RB0=sprintf ("<td bgcolor='#0%s00ff'>#0%s00ff</td>",dechex($i),dechex($i));
$RG =sprintf ("<td bgcolor='#ff%s00'>#ff%s00</td>",dechex($i),dechex($i));
$GB =sprintf ("<td bgcolor='#00ff%s'>#00ff%s</td>",dechex($i),dechex($i));
$RB =sprintf ("<td bgcolor='#%s00ff'>#%s00ff</td>",dechex($i),dechex($i));
if($i<16){echo "<tr>".$RG0.$GB0.$RB0."</tr>";}
else{echo "<tr>".$RG.$GB.$RB."</tr>";}
}
?>
</table>
</body>
</html>http://labo.web-do.com/php/colors/dechex2.php
にファイルを置いておきました。
テーブルだから、文字列を選択できるのがなんか嬉しい。 。
0 件のコメント:
コメントを投稿