コード例 #1
0
ファイル: custom_pages.py プロジェクト: webbob/EPD
def create_sched(filename):
    dat = open(filename).readlines()
    x = 0
    y = 0
    page = WIF()
    page_no = 0
    for line in dat:
        line = line.strip()
        def closewif(page, page_no):
            page.im.save(SCHEDULE_DIR + chr(ord('A') + page_no) + '.png')
            page_no += 1
            page = WIF()
            return page, page_no, 0

        if line.startswith('<P>'): ## new page
            line = line[3:]
            if y > 0:
                page, page_no, y = closewif(page, page_no)

        if line.startswith('<B>'):
            line = line[3:]
            bigascii = True
            wrap = 44
        else:
            bigascii = False
            wrap = 44
        for l in textwrap.wrap(line, wrap, subsequent_indent='  '):
            # page.addUnifont(l, x, y, bigascii=bigascii)
            page.add_7x5_txt(l, x, y)
            y += 9
            if y > 176 - 9:
                page, page_no, y = closewif(page, page_no)
                
    closewif(page, page_no)
コード例 #2
0
def wif_directory(dir, level, rotate=False):
    files = glob.glob(os.path.join(dir, '[A-Z].png'))
    files.sort()
    for i, img_fn in enumerate(files):
        page = WIF()
        fn = os.path.split(img_fn)[1]
        page.addImage(Image.open(img_fn), 0, 0)
        page.addBreadCrumb(0, 0, level, i, BREADCRUMB_SHAPE)
        if rotate:
            page.rotate180()
        page.saveas(OUTPUT_DIR + chr(ord('A') + level) + '/' + fn[0] + '.WIF')
コード例 #3
0
def create_sched(filename):
    dat = open(filename).readlines()
    x = 0
    y = 0
    page = WIF()
    page_no = 0
    for line in dat:
        line = line.strip()
        if line.startswith('<B>'):
            line = line[3:]
            bigascii = True
            wrap = 44
        else:
            bigascii = False
            wrap = 44
        for l in textwrap.wrap(line, wrap, subsequent_indent='  '):
            page.add_7x5_txt(l, x, y)
            y += 9
            if y > 176 - 16:
                page.im.save(SCHEDULE_DIR + chr(ord('A') + page_no) + '.png')
                page_no += 1
                page = WIF()
                y = 9
コード例 #4
0
ファイル: custom_pages.py プロジェクト: webbob/EPD
 def closewif(page, page_no):
     page.im.save(SCHEDULE_DIR + chr(ord('A') + page_no) + '.png')
     page_no += 1
     page = WIF()
     return page, page_no, 0
コード例 #5
0
ファイル: custom_pages.py プロジェクト: webbob/EPD
    shutil.copytree(source, dest)

### Custom Pages    
FILENAME = 'attendees1.csv'
people = list(csv.reader(open(FILENAME)))
header = people[0]
people = people[1:]

if os.path.exists(CUSTOM_DIR):
    shutil.rmtree(CUSTOM_DIR)
os.mkdir(CUSTOM_DIR)

for person in people[:]:
    person = Attendee(person, header)
    print person.name, person.headshot, person.logo
    pages = [WIF() for i in range(N_PAGE)]
    
    qr = person.qr().resize((QR_SIZE, QR_SIZE))
    for page in pages:
        page.addImage(Image.open(os.path.join(BACKGROUND)), 0, 0)
    pages[0].addImage(Image.open(os.path.join(HEADSHOT_DIR, person.getHeadshot())), 112, 0)
    pages[1].addImage(qr, WIDTH - QR_SIZE, 0)
    pages[2].addImage(Image.open(os.path.join(LOGO_DIR,  person.getLogo())), 112, 0)
    for page in pages:
        for i, role in enumerate(person.roles):
            page.addUnifont(role[:14], 0, 0 + (i + 1) * 16 + 5, bigascii=False)
            # page.addUnifont(role, 0, 0 + i * 16 + 5, bigascii=False)
            # page.addText(role, 0, 10 + i * (NORMAL_FONT_SIZE + 5) + 5)
        page.addText(person.name, WIDTH/2, HEIGHT, font_size=NAME_FONT_SIZE, halign='center', valign='bottom')

    dir = CUSTOM_DIR + '%04d-%s/ALBUM/' % (int(person.id), '_'.join(person.name.split()))
コード例 #6
0
def create_frontpage(sd,
                     alb='ALBUM/A',
                     filename=None,
                     headshot=None,
                     headshot_bbox=None):
    assert os.path.exists(sd)
    photo_only = False

    frontpage = WIF()

    if headshot is None or not os.path.exists(headshot):
        headshot = 'DEFAULT_HEADSHOT.png'
    ### Custom Page
    dir = os.path.join(sd, alb)
    image_dir = os.path.join(dir, 'A')

    if not os.path.exists(dir):
        print "%s not present" % alb
        dir = '.'
    if filename is None:
        photo_only = True
    else:
        filename = os.path.join(dir, 'A', filename)
        if not os.path.exists(filename):
            photo_only = True
            print "Cannot find personal record:", filename
    if headshot:
        print 'adding headshot "%s"' % headshot
        head = Image.open(headshot)
        print "head.size", head.size
        if headshot_bbox is None:
            if photo_only:
                headshot_bbox = ((WIDTH - head.size[0]) / 2,
                                 (HEIGHT - head.size[1]) / 2,
                                 (WIDTH + head.size[0]) / 2,
                                 (HEIGHT + head.size[1]) / 2)
            else:
                headshot_bbox = (112, 0, 264, 128)

        frontpage.addImage(head, headshot_bbox[0], headshot_bbox[1])
    if not photo_only:
        person = list(csv.reader(open(filename)))
        header = person[0]
        person = person[1]

        person = Attendee(person, header)
        print person.name
        ohs2013 = Image.open('ohs2013_thumb.jpg')
        frontpage.addImage(ohs2013, 5, 5)

        for i, role in enumerate(person.roles):
            frontpage.addUnifont(role, 5, 5 + (i + 1) * 16, bigascii=False)
        size = unifont.calcsize(person.name, bigascii=True)
        NAME_AREA = NAME_W, NAME_H
        scale = int(
            min([NAME_AREA[0] / float(size[0]),
                 NAME_AREA[1] / float(size[1])]))
        image1 = Image.new('L', size, WHITE)
        size = size[0] * scale, size[1] * scale
        unifont.addText(person.name, image1, 0, 0, bigascii=True)
        image2 = image1.resize(size)

        frontpage.im.paste(image2, ((NAME_W - size[0]) / 2, 176 - 24), 0)
        frontpage.addBreadCrumb(0, 0, 0, 0, BREADCRUMB_SHAPE)
    frontpage.saveas(os.path.join(image_dir, 'A.WIF'))
    # frontpage.show()
    return frontpage