HTML Color Table

使用Table來顯示各種顏色,可以看成是張顏色表,能夠定製顏色佈局(目前有3個定製好的顏色可以作爲參看),效果還可以,但很容易被灰化。直接運行這個python腳本在當前路徑下產生 color_table.html 文件,打開它就可以但到效果。

#!/usr/bin/python
# Filename : color_tbl_ex.py
# 2006-10-11 10:06 by [email protected]

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>&nbsp</td>' % scolor(predefs[loc]))
               else :
                    color = right_color(predefs, y, x)
                    req.write('<td bgcolor=%s>&nbsp</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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章