使用Table来显示各种颜色,可以看成是张颜色表,能够定制颜色布局(目前有3个定制好的颜色可以作为参看),效果还可以,但很容易被灰化。直接运行这个python脚本在当前路径下产生 color_table.html 文件,打开它就可以但到效果。
#!/usr/bin/python # Filename : color_tbl_ex.py # 2006-10-11 10:06 by daineng@nj.cpsecure D_Y = int(34) D_X = int(116) DY = D_Y - 1 DX = D_X - 1 DY2 = int(D_Y/2 - 1) DX2 = int(D_X/2 - 1) DY3 = int(D_Y/3 - 1) DX3 = int(D_X/3 - 1) DY4 = int(D_Y/4 - 1) DX4 = int(D_X/4 - 1) DY6 = int(D_Y/6 - 1) DX6 = int(D_X/6 - 1) color_black = (0, 0, 0) color_white = (0xff, 0xff, 0xff) color_red = (0xff, 0, 0) color_green = (0, 0xff, 0) color_blue = (0, 0, 0xff) color_cyan = (0, 0xff, 0xff) color_purple = (0xff, 0, 0xff) color_yellow = (0xff, 0xff, 0) color_grey = (0x88, 0x88, 0x88) d_tables = [ { (0, 0) : color_black, (0, DX2) : color_blue, (0, DX) : color_cyan, (DY2, 0) : color_green, #(DY2, DX2): color_grey, (DY2, DX): color_purple, (DY, 0) : color_yellow, (DY, DX2): color_red, (DY, DX): color_white }, { (0, 0) : color_red, (0, 2*DX4) : color_green, (0, 3*DX4) : color_blue, (0, DX) : color_red, }, { (0, 0) : color_red, (0, DX) : color_green, (DY, 0) : color_blue, (DY, DX) : color_white, }, { (DY2, 0) : color_red, (DY2, DX) : color_green, } ] def scolor(tcolor) : return '#%02X%02X%02X' % tcolor def get_radio(predefs, y, x) : import math distances = [] sum = 0 for loc in predefs.keys() : dy = loc[0] - y dx = loc[1] - x distance = math.hypot(dy, dx) sum = sum + distance distances.append(distance) v_distances = map(lambda x : sum/x, distances) sum = 0 for dis in v_distances : sum = sum + dis radio = map(lambda x : x/sum, v_distances) return radio def right_color(predefs, y, x) : radio = get_radio(predefs, y, x) c1 = c2 = c3 = 0 i = 0 for loc in predefs.keys() : color = predefs[loc] c1 = c1 + (color[0] * radio[i]) c2 = c2 + (color[1] * radio[i]) c3 = c3 + (color[2] * radio[i]) i = i + 1 if c1 > 0xff : c1 = 0xff if c2 > 0xff : c2 = 0xff if c3 > 0xff : c3 = 0xff return '#%02X%02X%02X' % (int(c1), int(c2), int(c3)) def write_color_table(req, predefs) : req.write('<table border=0 cellpadding=0 cellspacing=0><tr>') for y in range(D_Y) : req.write('<tr>') for x in range(D_X) : loc = (y, x) if loc in predefs.keys() : req.write('<td bgcolor=%s> </td>' % scolor(predefs[loc])) else : color = right_color(predefs, y, x) req.write('<td bgcolor=%s> </td>' % color) req.write('</tr>') req.write('</table>') def ctable(req) : req.content_type = 'text/html' req.write('<html><body>') for dtbl in d_tables : write_color_table(req, dtbl) req.write('<p>') req.write('</body></html>') return if __name__ == '__main__' : f = open('color_table.html', 'w') f.write('<html><body') for dtbl in d_tables : write_color_table(f, dtbl) f.write('<p>') f.write('</body></html>') f.close() |