我正在尝试生成一个包含16种颜色的调色板,将在4x4网格中显示。
因此,我必须找到一种方法来划分具有255*255*255种颜色的rgb颜色调色板,使其平均且逻辑合理地分成16种颜色。
我认为这将是一个数学算法,因为我正在尝试从3x3矩阵中选择16个向量,这些向量被等比例地选取。
因此,我必须找到一种方法来划分具有255*255*255种颜色的rgb颜色调色板,使其平均且逻辑合理地分成16种颜色。
我认为这将是一个数学算法,因为我正在尝试从3x3矩阵中选择16个向量,这些向量被等比例地选取。
1 X 1 X 1 = 1
2 X 2 X 2 = 8
3 X 3 X 3 = 27
#fffffe
、#fffeff
和#feffff
占据数学空间的远端,但对于人眼来说几乎无法区分。黑色 暗灰色 浅灰色 白色 深红色 深绿色 深蓝色 暗黄色 中红色 中绿色 中蓝色 中黄色 浅红色 浅绿色 浅蓝色 浅黄色我在一个有点卡通色彩的游戏(VGA)中使用了这个颜色集,并发现它效果相当不错。我认为我将颜色序列排列得有点不同,但以上序列如果按4x4的方格排列似乎更合理。
从整数颜色开始,进行明显的数学计算(或者如果您能够以16进制思考,则可以从16进制开始)。将每个所需样本的数字添加到颜色中。将颜色整数转换为十六进制,然后将十六进制拆分为RGB。在此代码示例中,最后一种颜色将在分割数内达到十六进制白色(0xffffff)。
# calculate color sample sizes
divisions = 16 # number of desired color samples
total_colors = 256**3-1
color_samples = int((total_colors) / divisions)
print('{0:,} colors in {1:,} parts requires {2:,} per step'.format(total_colors, divisions , color_samples))
# loop to print results
ii = 0
for io in range(0,total_colors,color_samples):
hex_color = '{0:0>6}'.format(hex(io)[2:])
rc = hex_color[0:2] # red
gc = hex_color[2:4] # blue
bc = hex_color[4:6] # green
print('{2:>5,} - {0:>10,} in hex {1} | '.format(io, hex_color, ii), end='')
print('r-{0} g-{1} b-{2} | '.format(rc, gc, bc), end='')
print('r-{0:0>3} g-{1:0>3} b-{2:0>3}'.format(int(rc,16), int(gc,16), int(bc,16)))
ii +=1