2017-02-21 15 views
0

RGBと1つの連続カラー値(float [0..1]やInteger [0..255]など)との間で変換が可能かどうか質問したいと思います。色の範囲を表します。RGBと1つの整数/浮動小数点値の間の変換

例::私は、虹のような連続色の範囲があります: - オレンジ - 黄 - 緑 - 青 - インディゴ - バイオレット

-

赤>で表す0〜1または0〜255(またはどんな範囲で)

そして今私は値を変換したい(0.5 =緑)から等しいRGB値([0,1,0]Ω)に変更する。それは伝達関数(前後)で可能ですか?多分Pythonで?

答えて

2

RGBが3つの数字を必要とする理由はすべて、本質的に3D空間であるからです。あなたは3つの連続した数字の行を1つに絞ろうとしています!あなたが好きを通じてカラーブレンド...(コードVBAで記述されたが、簡単にポータブル)

For i = 1 To 255 
    ' Scale with no red, increase and decrease blue and green respectively 
    Range("a" & i).Interior.Color = RGB(0, i, 255 - i) 
    ' Use a MOD function to keep the values between 0 and 255 
    ' note this can cause some abrupt changes in your scale 
    Range("b" & i).Interior.Color = RGB(128 + i Mod 255, i, 255 - i) 
    ' You can increase and decrease different RGB values for desired result 
    Range("c" & i).Interior.Color = RGB((255 - i) Mod 255, (0 + i) Mod 255, i)  
Next i 

出力(よりよいのための行に作られた列を表示するには、以下のようなプレーを周りに持って、スケールを選択する必要があると思います)の観察:

Colour bands

だから、あなたは自分の単一の変数としてiを持つことになり、上記したような1Dスケール()にRGBから行くために、あなたが望んでいた場合は、ルックアップを保存するか、どの機能を作成することができます上記の各行が行うように、iの単一の値から色を作成します。

この1Dスケールから3Dスケールに戻るのは技術的に不可能です。必要な追加情報が失われました。しかし、スケールを作成するためのマッピング関数を知っていれば、RGB値をそれぞれの入力で簡単に取得できます。

これが役に立ちます。

+0

ありがとうございます、あなたはまったく正しいです。可能なすべての色に1つの_i_を反復するのは難しいです。私がPhotoshopを見てみると、「サークル」内のすべての可能な色を(色を含まずに)繰り返すカラーマネージャが見つかりました:[リンク](https://picload.org/image/rlgwlcci/screenshot2017-02-2116.15 .26.png)それは赤(0,0,256)で始まり、同じ赤の値で終わり、6ターンで_i_を増減します。そのため、3DのRGB空間に6行を作成し、最も重要な色。私はこれから伝達関数を構築しようとします。 – Rainflow

+0

Photoshopの調査と私の答えの間には、動作するシステムがあるかもしれません。ソリューションに手伝ってくれたら、私の答えを受け入れてくれてありがとう – Wolfie

0

最も簡単な方法は、各コンポーネントに重みを付けながらRGBを加算することです。そうすることで、0-16,777,215の範囲が得られます。例:すべてのGoogleの上になります任意の言語での六角コンバータ用​​

コード:

RGB Tuple = Hex Value = Decimal 
0,0,0 = 0x000000 = 0 
255,255,255 = 0xFFFFFF = 16777215 

ここで任意の個々の色を変換するオンライン電卓です。 :)

選択した数字スペースに1670万以上のユニークな色がすべて含まれている限り、好きな数のスペース(たとえば0-1など)を自由に使用できます。

数字スペースを圧縮すると、最初のポスターが説明されているように、色が失われてしまいます。

関連する問題