「色彩の値を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 件のコメント:
コメントを投稿