Example #1
0
def plot_sparkline_smooth(results, args):
   step = int(args.get('step', '2'))
   height = int(args.get('height', '20'))
   (dmin, dmax) = [int(x) for x in args.get('limits', '0,100').split(',')]
   im = PNGCanvas((len(results)-1)*step+4, height)
   im.color = rgb.colors('white')
   im.filledRectangle(0, 0, im.width-1, im.height-1)
   coords = zip(range(1,len(results)*step+1, step), [height - 3  - (y-dmin)/(float(dmax - dmin +1)/(height-4)) for y in results])
   im.color = rgb.colors('gray53')
   lastx, lasty = coords[0]
   for x0, y0, in coords:
     im.line(lastx, lasty, x0, y0)
     lastx, lasty = x0, y0
   min_color = rgb.colors(args.get('min-color', 'green'))
   max_color = rgb.colors(args.get('max-color', 'red'))
   last_color = rgb.colors(args.get('last-color', 'blue'))
   has_min = args.get('min-m', 'false')
   has_max = args.get('max-m', 'false')
   has_last = args.get('last-m', 'false')
   if has_min == 'true':
      min_pt = coords[results.index(min(results))]
      im.color = min_color
      im.filledRectangle(min_pt[0]-1, min_pt[1]-1, min_pt[0]+1, min_pt[1]+1)
   if has_max == 'true':
      im.color = max_color
      max_pt = coords[results.index(max(results))]
      im.filledRectangle(max_pt[0]-1, max_pt[1]-1, max_pt[0]+1, max_pt[1]+1)
   if has_last == 'true':
      im.color = last_color
      end = coords[-1]
      im.filledRectangle(end[0]-1, end[1]-1, end[0]+1, end[1]+1)
   return im.dump()
Example #2
0
def plot_error(results, args):
    im = PNGCanvas(40, 15)
    im.color = rgb.colors['red']
    im.line(0, 0, im.width - 1, im.height - 1)
    im.line(0, im.height - 1, im.width - 1, 0)
    return im.dump()
Example #3
0
class Image():
    text = None
    md5Text = None
    img = None
    width = 0
    height = 0
    #长度
    textX = 10
    textY = 10
    beginX = 5
    endX = 5
    beginY = 5
    endY = 5
    spare = 4

    def __init__(self, text=None):
        if (text == None):
            self.text = self.getRandom()
        else:
            self.text = text
        #self.getMd5Text()
        self.width = len(str(
            self.text)) * (self.spare + self.textX) + self.beginX + self.endX
        self.height = self.textY + self.beginY + self.endY

    def create(self):
        self.img = PNGCanvas(self.width, self.height)
        self.img.color = [0xff, 0xff, 0xff, 0xff]
        #self.img.color = [0x39,0x9e,0xff,0xff]
        #self.img.verticalGradient(1,1,self.width-2, self.height-2,[0xff,0,0,0xff],[0x60,0,0xff,0x80])
        self.img.verticalGradient(1, 1, self.width - 2, self.height - 2,
                                  [0xff, 0x45, 0x45, 0xff],
                                  [0xff, 0xcb, 0x44, 0xff])

        for i in range(4):
            a = str(self.text)[i]
            self.writeText(a, i)

        return self.img.dump()

    def getRandom(self):
        intRand = random.randrange(1000, 9999)
        return intRand

    def getMd5Text(self):
        m = md5.new()
        m.update(str(self.text))
        self.md5Text = m.hexdigest()

    def writeText(self, text, pos=0):
        if (text == "1"):
            self.writeLine(pos, "avc")
        elif (text == "2"):
            self.writeLine(pos, "aht")
            self.writeLine(pos, "hvtr")
            self.writeLine(pos, "ahc")
            self.writeLine(pos, "hvbl")
            self.writeLine(pos, "ahb")
        elif (text == "3"):
            self.writeLine(pos, "aht")
            self.writeLine(pos, "ahc")
            self.writeLine(pos, "ahb")
            self.writeLine(pos, "avr")
        elif (text == "4"):
            self.writeLine(pos, "hvtl")
            self.writeLine(pos, "ahc")
            self.writeLine(pos, "avc")
        elif (text == "5"):
            self.writeLine(pos, "aht")
            self.writeLine(pos, "hvtl")
            self.writeLine(pos, "ahc")
            self.writeLine(pos, "hvbr")
            self.writeLine(pos, "ahb")
        elif (text == "6"):
            self.writeLine(pos, "aht")
            self.writeLine(pos, "avl")
            self.writeLine(pos, "ahc")
            self.writeLine(pos, "hvbr")
            self.writeLine(pos, "ahb")
        elif (text == "7"):
            self.writeLine(pos, "aht")
            self.writeLine(pos, "avr")
        elif (text == "8"):
            self.writeLine(pos, "aht")
            self.writeLine(pos, "avl")
            self.writeLine(pos, "ahc")
            self.writeLine(pos, "avr")
            self.writeLine(pos, "ahb")
        elif (text == "9"):
            self.writeLine(pos, "aht")
            self.writeLine(pos, "avr")
            self.writeLine(pos, "ahc")
            self.writeLine(pos, "ahb")
            self.writeLine(pos, "hvtl")
        elif (text == "0"):
            self.writeLine(pos, "aht")
            self.writeLine(pos, "avl")
            self.writeLine(pos, "avr")
            self.writeLine(pos, "ahb")

    '''
    type解释
    a:全部,部分上下
    h:一半
    h:横
    v:竖
    l:左,上
    c:中间
    r:右,下
    t:上
    b:下
    '''

    def writeLine(self, pos, type):
        if (type == "avl"):
            self.img.line(self.beginX + (self.textX + self.spare) * pos,
                          self.beginY,
                          self.beginX + (self.textX + self.spare) * pos,
                          self.beginY + self.textY)
        elif (type == "avc"):
            self.img.line(
                self.beginX + (self.textX + self.spare) * pos + self.textX / 2,
                self.beginY,
                self.beginX + (self.textX + self.spare) * pos + self.textX / 2,
                self.beginY + self.textY)
        elif (type == "avr"):
            self.img.line(
                self.beginX + (self.textX + self.spare) * pos + self.textX,
                self.beginY,
                self.beginX + (self.textX + self.spare) * pos + self.textX,
                self.beginY + self.textY)
        elif (type == "aht"):
            self.img.line(
                self.beginX + (self.textX + self.spare) * pos,
                self.beginY,
                self.beginX + (self.textX + self.spare) * pos + self.textX,
                self.beginY,
            )
        elif (type == "ahc"):
            self.img.line(
                self.beginX + (self.textX + self.spare) * pos,
                self.beginY + self.textY / 2,
                self.beginX + (self.textX + self.spare) * pos + self.textX,
                self.beginY + self.textY / 2)
        elif (type == "ahb"):
            self.img.line(
                self.beginX + (self.textX + self.spare) * pos,
                self.beginY + self.textY,
                self.beginX + (self.textX + self.spare) * pos + self.textX,
                self.beginY + self.textY)
        elif (type == "hvtl"):
            self.img.line(self.beginX + (self.textX + self.spare) * pos,
                          self.beginY,
                          self.beginX + (self.textX + self.spare) * pos,
                          self.beginY + self.textY / 2)
        elif (type == "hvtr"):
            self.img.line(
                self.beginX + (self.textX + self.spare) * pos + self.textX,
                self.beginY,
                self.beginX + (self.textX + self.spare) * pos + self.textX,
                self.beginY + self.textY / 2)
        elif (type == "hvbl"):
            self.img.line(self.beginX + (self.textX + self.spare) * pos,
                          self.beginY + self.textY / 2,
                          self.beginX + (self.textX + self.spare) * pos,
                          self.beginY + self.textY)
        elif (type == "hvbr"):
            self.img.line(
                self.beginX + (self.textX + self.spare) * pos + self.textX,
                self.beginY + self.textY / 2,
                self.beginX + (self.textX + self.spare) * pos + self.textX,
                self.beginY + self.textY)