81

Django アプリの場合、各「メンバー」には識別しやすいように色が割り当てられます。それらの色はデータベースに保存され、必要に応じて HTML に印刷/コピーされます。Hex唯一の問題は、python/django でランダムな色を生成する方法がわからないことです。RGB カラーを生成するのは簡単ですが、それらを保存するには、a) 「メンバー」モデルに 3 つの余分な列を作成するか、b) それらをすべて同じ列に保存し、コンマを使用してそれらを区切ってから、後で、 HTML の色を解析します。これらはどちらもあまり魅力的ではないので、繰り返しHexますが、python/django でランダムな色を生成する方法を考えています。

4

17 に答える 17

164
import random
r = lambda: random.randint(0,255)
print('#%02X%02X%02X' % (r(),r(),r()))
于 2012-12-24T09:04:18.783 に答える
58

簡単な方法は次のとおりです。

import random
color = "%06x" % random.randint(0, 0xFFFFFF)

ランダムな 3 文字の色を生成するには:

import random
color = "%03x" % random.randint(0, 0xFFF)

%xC ベースの言語では、 は整数を 16 進文字列としてフォーマットする文字列フォーマッタであり、0xは基数 16 で数値を書き込むためのプレフィックスです。

必要に応じて、色の前に「#」を付けることができます (CSS スタイル)

于 2013-08-03T17:32:59.523 に答える
4

3 つのチャネルを異なるビット オフセットで整数として格納するだけです (メモリに格納されることが多いように)。

value = (red << 16) + (green << 8) + blue

(各チャンネルが 0 ~ 255 の場合)。その整数をデータベースに保存し、個別のチャネルに戻る必要がある場合は逆の操作を行います。

于 2012-12-22T00:28:23.013 に答える
2
import random

def generate_color():
    color = '#{:02x}{:02x}{:02x}'.format(*map(lambda x: random.randint(0, 255), range(3)))
    return color
于 2015-07-17T15:05:27.337 に答える
2

ランダムなものを生成するには、random モジュールを見てください

モジュールを使用してランダムな整数を生成し、 modulo を取り2**24、上位 8 ビットを R として扱い、中間の 8 ビットを G として、下位 8 ビットを B として扱うことをお勧めします。
すべて div/mod またはビット単位で実現できます。オペレーション。

于 2012-12-22T00:30:01.533 に答える
1
hex_digits = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']

digit_array = []

for i in xrange(6):
    digit_array.append(hex_digits[randint(0,15)])
joined_digits = ''.join(digit_array)

color = '#' + joined_digits
于 2013-08-24T04:24:11.050 に答える
1

これは、16 進数の色表記が表すものに基づいて作成した簡単なコードです。

import random 

def getRandomCol():
    
    r = hex(random.randrange(0, 255))[2:]
    g = hex(random.randrange(0, 255))[2:]
    b = hex(random.randrange(0, 255))[2:]

    random_col = '#'+r+g+b
    return random_col

16 進数のカラー コードの「#」は、表示されている数値が 16 進数であることを示しています。重要なのは次の 6 桁です。これらの 6 桁の 16 進数の 2 桁のペアは、それぞれ RGB (赤、緑、および青) の強度を表します。各色の強度は 0 ~ 255 の範囲で、RGB の異なる強度の組み合わせによって異なる色が生成されます。

たとえば、#ff00ffでは、最初ffは 10 進数で 255 に相当し、次00は 10 進数で 0 に相当し、最後ffは 10 進数で 255 に相当します。したがって、#ff00ff16 進数の色分けでは に相当しRGB(255, 0, 255)ます。

この概念では、私のアプローチの説明は次のとおりです。

  1. rg およびのそれぞれに対して生成された乱数の強度b
  2. これらの強度を 16 進数に変換しました
  3. 各 16 進数値の最初の 2 文字を無視'0x'
  4. '#'16 進数値rgおよびb 強度と連結されます。

色の仕組みについて詳しく知りたい場合は、このリンクを参照してください: https://hackernoon.com/hex-colors-how-do-they-work-d8cb935ac0f

乾杯!

于 2019-12-28T09:07:37.263 に答える