画像の色を解析するPHPクラスライブラリー

sample_color_extract
http://www.coolphptools.com/color_extract
今の時代自分で書かなくてもどっかにライブラリーが転がっていて、プログラマーの仕事というよりか、ディレクションする人の知識とか情報ネットワークとかそういう方が全然優位で恐れ入っている今日このごろです。このPHPクラスは画像の解析ができてしまいます。
http://www.omnioo.com/record/zsample/php/color_extract/colorextract_1_0/
こんな感じでその画像がどの色を何回使っているのかというのを解析して配列で返してくれます。すごいですね。

コアになっているライブラリーは、colors.inc.phpです。ダウンロードしてinclude_once("colors.inc.php");みたいな感じで読み込みます。そのライブラリ中のGetMostCommonColors();をnewしてコンストラクタを作成。適当なオブジェクトに放り込む。$ex->Get_Color();メソッドに画像やら何やらのパラメータを与えてやって配列の返り値を取り出すだけという手続きになってます。Sample

設定できるパラメーターは、

  • $delta 彩度・色の差の抽出:設定値を上げると彩度の強い色を抽出します。
  • $reduce_brightness 明るすぎる色を抑えて抽出します。
  • $reduce_gradients 色勾配(色の差)を抑えて抽出します。
  • $num_results 使用している色の分割数です。1に設定すると最も多く使われている色を1色だけ抽出します。255に設定するとその順位で255色抽出します。

<?php
include_once("./colorextract_1_0/colors.inc.php");

$delta = 24; //彩度・色の差を設定(1-255)255でコントラストを最高値にする
$reduce_brightness = true; //明るさを縮小
$reduce_gradients = true; //色勾配を縮小
$num_results = 1; //色分布の分割数

$ex = new GetMostCommonColors();
$colors = $ex->Get_Color("./images/kashiwagi.jpg", $num_results, $reduce_brightness, $reduce_gradients, $delta);

foreach ($colors as $key=>$value) {
$color_block = <<< EOM
<div class="color_block" style="background:#$key">#$key</div>
EOM;
print $color_block."<br />";
}
?>