RGB/Hex 形式の色を最も近い Web セーフ カラーに変換したいと考えています。
ウェブセーフ カラーの詳細については、http: //en.wikipedia.org/wiki/Web_safe_colorを参照してください。
この Web サイト ( http://www.colortools.net/color_make_web-safe.html ) は、私がやりたいように実行できますが、Python でそれを行う方法がわかりません。誰か助けてくれませんか?
RGB/Hex 形式の色を最も近い Web セーフ カラーに変換したいと考えています。
ウェブセーフ カラーの詳細については、http: //en.wikipedia.org/wiki/Web_safe_colorを参照してください。
この Web サイト ( http://www.colortools.net/color_make_web-safe.html ) は、私がやりたいように実行できますが、Python でそれを行う方法がわかりません。誰か助けてくれませんか?
多少の誤称ではありますが、Web セーフ カラー パレットは色の量子化に非常に役立ちます。シンプル、高速、柔軟、そしてユビキタスです。#369
また、代わりになどの RGB 16 進数の短縮形も使用できます#336699
。チュートリアルは次のとおりです。
00, 33, 66, 99, CC, FF
。したがって、最大 RGB 値255
を 5 (可能な値の合計よりも 1 少ない数) で割り、倍数の値 を得ることができます51
。255
(これにより、0-1
ではなくからの値になります0-255
)。5
、結果を四捨五入して正確に保つようにします。を乗算し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)
他の人が示唆しているように、色を比較したり、巨大なルックアップ テーブルを作成したりする必要はありません。:-)
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次元木について