4

RGB/Hex 形式の色を最も近い Web セーフ カラーに変換したいと考えています。

ウェブセーフ カラーの詳細については、http: //en.wikipedia.org/wiki/Web_safe_colorを参照してください。

この Web サイト ( http://www.colortools.net/color_make_web-safe.html ) は、私がやりたいように実行できますが、Python でそれを行う方法がわかりません。誰か助けてくれませんか?

4

2 に答える 2

6

多少の誤称ではありますが、Web セーフ カラー パレットは色の量子化に非常に役立ちます。シンプル、高速、柔軟、そしてユビキタスです。#369また、代わりになどの RGB 16 進数の短縮形も使用できます#336699。チュートリアルは次のとおりです。

  1. Web セーフ カラーは RGB トリプレットで、各値は次の 6 つのいずれかです00, 33, 66, 99, CC, FF。したがって、最大 RGB 値255を 5 (可能な値の合計よりも 1 少ない数) で割り、倍数の値 を得ることができます51
  2. で割ってチャネル値を正規化します255(これにより、0-1ではなくからの値になります0-255)。
  3. を掛けて5、結果を四捨五入して正確に保つようにします。
  4. を乗算し51て、最終的な Web セーフ値を取得します。全体として、これは次のようになります。

    def getNearestWebSafeColor(r, g, b):
        r = int(round( ( r / 255.0 ) * 5 ) * 51)
        g = int(round( ( g / 255.0 ) * 5 ) * 51)
        b = int(round( ( b / 255.0 ) * 5 ) * 51)
        return (r, g, b)
    
    print getNearestWebSafeColor(65, 135, 211)
    

他の人が示唆しているように、色を比較したり、巨大なルックアップ テーブルを作成したりする必要はありません。:-)

于 2015-03-12T05:36:45.757 に答える
3
import scipy.spatial as sp

input_color = (100, 50, 25)
websafe_colors = [(200, 100, 50), ...] # list of web-save colors
tree = sp.KDTree(websafe_colors) # creating k-d tree from web-save colors
ditsance, result = tree.query(input_color) # get Euclidean distance and index of web-save color in tree/list
nearest_color = websafe_colors[result]

input_colorまたは、数秒間ループを追加します

k次元木について

于 2014-03-18T11:34:55.673 に答える