# Copyright (c) 2008 Andreas Balogh # See LICENSE for details. """ decode ASCII greyscale """ # system imports import Tkinter as Tk import logging from StringIO import StringIO from PIL import Image from PIL import ImageTk # local imports # constants # globals LOG = logging.getLogger() logging.basicConfig(level=logging.DEBUG, format='%(asctime)s.%(msecs)03i %(levelname).4s %(process)d:%(thread)d %(message)s', datefmt='%H:%M:%S') CODE = "#MWmBEKNQkAbqXHgUFRhdwp8&aDGVZ9utO03CYvlrI=i<7+?}(*[/|;!^-~`,:. " def main(): tkis = [] # build gui root = Tk.Tk() root.title("bottier") bu1 = Tk.Button(root, text='Quit', command= root.quit) bu1.pack(side = Tk.BOTTOM, padx = 5, pady = 5) for s in (PIC1, PIC2, PIC3, PIC4, PIC5): im = ascii2img(s) tki = ImageTk.PhotoImage(im, gamma = 2) tkis.append(tki) la = Tk.Label(root, image = tki) la.pack(side = Tk.RIGHT, padx = 5, pady = 5) root.mainloop() root.destroy() def ascii2img(s): # create the image # lines = StringIO(s).readlines() # height = len(lines) # width = len(lines[0]) # im = Image.new("L", (width, height)) im = Image.new("L", (100, 100)) for y, line in enumerate(StringIO(s)): for x, c in enumerate(line): im.putpixel((x, y), CODE.find(c) * 4) bbox = im.getbbox() bbim = im.crop(bbox) imx2 = bbim.resize((bbox[2]*2, bbox[3]*2), Image.ANTIALIAS) return imx2 PIC1 = """\ BEmmmBBBBBNNEBBEEKBBHd&aDGapHNBEBBBBEKBEmBBEBBKgdp8wdRbEBKEEEEENKQNAAbbXUp8aD9 BEBBBEKENNNEBEEKEEmAd8DZVG&RkEBmBBEEKBBBmmmmBBmbh&Da&wFQBmmmBmBmmmBWmmmBmmmBmm mBBBBBEKNKKKKKKENBkh8VVZGDwXNEBBBEEBBBBBmWmmmmmEgwaDGDpFKBBmmmmmmWmWWmWWWWWmmW EEBBKBEKNNKNEEEQEER&VZ99V8gNKBEBBEBEBBBmmmmmmmmWqh&DVGawqmEmBmmmmmBWmWWmWWMWWM KEBKEEKNKKKKKNNNBqG9OOtuGhAKEEEEBBBBBBBBBmmBBBmmEgwaDaa8RNBBBmBBBmmmmWWmWMWWWM BBBBENKQNKENNQNNmRu0003taXNKKEKEBEEBEBmmBBBmmBBmmNF8aDDawXKmWBBWBmmmMWWmWWWMMM EKEBKNkQNKNNNNQNBRO333YO&bQNKKKKBBBmWMWWMWWmmmBmmWAR8VGG&hbBmWWmmmWWWWMMMMMMMM NKEENAAkNKNkQNkKQ&3YYvvO&AKEEEBBmWWMMMMW#MMMMMMMMMWEgpGGDawbBBmBmBWmmWWWMWMWMM NKEKkAkkKNKkQQkKXZClrIv3DbNEWMMMMM#MMM#MM#MMM#MMMMMMmNgZZGVwEmBmmmWmmmmmWWWMM# QNQkkQQkNQQkkAkERtYr=Il3VHKWMMMMMMMMMM#M#MMWMMMMMMMMMEAdZVZREEmBBmmWmmmmmWWWMW kbkbAkQkNQQAkkQEpOv=i=rY9hBWWMWMMMMMMWMMBABmWMMWWWWMWWN899VdKEEBBmmmWmBBmmmWWW AbbbbkkkNQbbAQQNDCrii=Iv9dKmMMMMMMMMWWWmBXAKEmKghFQmMMBqVt9&QEEBBmBmmBBmmmmmmm bqqXXAkQNAqqXbQAG3I<