人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpで色順のソート

#ffffff、#000000、#ccffcc.......などを
これらの文字順ではなく、
色が似た順にソートしたいのですが可能でしょうか。

可能だとしたら、ソートの方法を教えて下さい。

よろしくお願いします。

●質問者: worldtravel
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:#000000 PHP ソート 方法
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● mdfmk
●10ポイント

http://saito-art.com/blog/blosxom.cgi/etc/color.html

こちらに色相順に並べるphpのソースが公開されていました。

こういった事をされたいということで合っていますか?

◎質問者からの返答

ありがとうございます。

似ているようですけど違いました。

手元にランダムな色のデータがあるのですが、

これを似ている色順に並び替えたいのです。


2 ● TransFreeBSD
●10ポイント

http://www.php.net/manual/ja/function.usort.php

色同士の大小関係を判断する関数を定義できれば可能です。

問題は色空間は一次元的ではない、ということです。

黒、白、赤、青とそれぞれの中間色があった時、それを1次元で並べる事が可能でしょうか?

不完全でも目的に合致するような大小関係を矛盾なく定義できるかだと思います。

◎質問者からの返答

ありがとうございます。

確かに何となく思っているだけで

100色くらいの色を自分で並べてみろと言われると

どう並べればよいか、という時点で悩みそうです。


3 ● kyart
●10ポイント

c13a72、cccccc、e45991はそれぞれ最初の二文字がR(赤)、真ん中の二文字がG(緑)、最後の二文字がB(青)を表してますよね。それをsubstrか何かで、切り分けて、hexdecで10進数にしてから、似せたい色味に合わせてソートしたらどうでしょうか?あるいは面倒ですが、その3つの値をそれぞれ比較する関数を作って、差の少ない順に似ていると判断するとか。

他の方も指摘しているように色というのは多面的(色相以外にも、彩度とか明度とか)なので単純には何をもって「似ている」と判断するか難しいように思いますが、似ているとは何かがある程度明確ならできそうですね。

◎質問者からの返答

ありがとうございます。

やはり、簡単にはいかなそうですね.....。


4 ● Otchy
●100ポイント ベストアンサー

他の方の言われている回答と合わせて、こんな風にしたら概ね似た色を選べると思います。

1) RGB それぞれの数値を取り出す。

2) RGB を X 軸 Y 軸 Z 軸と見なす。

3) 各色同士の空間的な距離を計算する。(数学の教科書を引っ張り出してきて下さい)

4) 総距離が最短になるよう、全ての色を一筆書きでつなぐ軌跡を割り出す。

この 4 の順番が似た色の順になっているはずです。

◎質問者からの返答

ありがとうございます。

これまた更に難しそう.....--;

既に誰かが作った関数か何かが

どこかにあるかなと思っていたのですが

無さそうですね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ