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)
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')
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
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
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()))
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