我正在开展一个项目,要求我为每个项目选择“独特”的颜色。有时可能会有超过400件物品。是否有一些方法可以选择最不同的400种颜色?它只是简单地用固定的增量来改变RGB值吗?
答案 0 :(得分:3)
你可以通过将红色,绿色和蓝色依次增加34来得到400种颜色的相等分布。
那是:
答案 1 :(得分:0)
对于此任务,HSL or HSV可能是比RGB更好的表示。
你可能会发现改变色调会给眼睛带来更好的可变性感知,所以要调整你的增量,使得在S和L中每改变一个X单位就改变Y(用Y
答案 2 :(得分:0)
这是我的最终代码。希望它可以帮助有人在路上。
from PIL import Image, ImageDraw
import math, colorsys, os.path
# number of color circles needed
qty = 400
# the lowest value (V in HSV) can go
vmin = 30
# calculate how much to increment value by
vrange = 100 - vmin
if (qty >= 72):
vdiff = math.floor(vrange / (qty / 72))
else:
vdiff = 0
# set options
sizes = [16, 24, 32]
border_color = '000000'
border_size = 3
# initialize variables
hval = 0
sval = 50
vval = vmin
count = 0
while count < qty:
im = Image.new('RGBA', (100, 100), (0, 0, 0, 0))
draw = ImageDraw.Draw(im)
draw.ellipse((5, 5, 95, 95), fill='#'+border_color)
r, g, b = colorsys.hsv_to_rgb(hval/360.0, sval/100.0, vval/100.0)
r = int(r*255)
g = int(g*255)
b = int(b*255)
draw.ellipse((5+border_size, 5+border_size, 95-border_size, 95-border_size), fill=(r, g, b))
del draw
hexval = '%02x%02x%02x' % (r, g, b)
for size in sizes:
result = im.resize((size, size), Image.ANTIALIAS)
result.save(str(qty)+'/'+hexval+'_'+str(size)+'.png', 'PNG')
if hval + 10 < 360:
hval += 10
else:
if sval == 50:
hval = 0
sval = 100
else:
hval = 0
sval = 50
vval += vdiff
count += 1