色と16進数の変換

新しいサービスで色を扱うので、もっとちゃんと操りたい。
色の三原色とかよく聞くけど最近やっとどういう事かわかってきた。
webではRGBで表すのが一般的でこの光の強さの段階で色が変わる。
0から255までの256段階でRGBが全て255だと真っ白。
逆に全部0で真っ黒。

htmlの背景色でよく使われるのが16進数によるRGBの表現で
#ff99ccとか#ffff00とか、馴染みが深いと思います。

16進数とはその名の通り16で位が上がる、表記は0から9までの数字とAからFまでを使う。
225,225,225はffffffと同じ、と…

この16進数はあとから10進数に変換、その逆もphpなら簡単に出来るんですね。

hexdec(対象となる16進数)

以下サンプル。getで16進数の色を渡したらその色で塗られた矩形の画像を出力する(要GD)

<?php
//サンプルなので例外処理とかしてないよー
$mycolor = $_GET["color"];

//6つの字を2つずつ区切り
$red = substr($mycolor, 0, 2);
$green = substr($mycolor, 2, 2);
$blue = substr($mycolor, 4, 2);

//16から10進数へ
$red = hexdec($red);
$green = hexdec($green);
$blue = hexdec($blue);

//出力準備
header('Content-Type: image/png');

//土台を作成
$image = imagecreate(150,150);
//変換した色で塗り
imagecolorallocate($image, $red,$green,$blue);
//出力
imagepng($image);
//メモリ開放
imagedestroy($image);

?>

実行結果載せる気力なし