Esempio n. 1
0
def render2(data):
    scale = 2.0
    max_courses = 100

    frequencies = { normalized(course['name']): course['watch_time'] for course in data['user_courses'] \
        if course['watch_time'] > 0 }
    for course in data['category_courses']:
        name = normalized(course['name'])
        if name not in frequencies:
            frequencies[name] = 1
            if len(frequencies) > max_courses: break

    mask = Image.open(img_dir + 'circle.png')
    width, height = mask.size
    mask = np.array(
        mask.resize((int(mask.size[0] / float(scale)),
                     int(mask.size[1] / float(scale)))))
    wordcloud = WordCloud(scale=scale, background_color='white', width=int(width/float(scale)), height=int(width/float(scale)), margin=2, font_path=font_dir + 'msyhl.ttc', mask=mask) \
        .generate_from_frequencies(frequencies).to_image()

    l, t = 42, 594
    r, b = 1458, 2328
    wordcloud = wordcloud.crop((l, t, r, b))

    pos = l, t
    canvas = Image.open(img_dir + '2.png')
    canvas.paste(wordcloud, pos)

    printer(canvas, (800, 170), data['max_category'], 'msyh.ttc', 150)
    printer(canvas, (920, 400), '%3d' % data['max_cnt'], 'ELEPHNT.TTF', 120)
    return canvas