如何轻松打印ascii艺术的文字?

我有一个程序可以转储大量的输出,并且我希望有一些输出能够真正脱颖而出 。 一种方法可能是用ascii艺术呈现重要的文本 ,就像这个web服务所做的那样:

# # ## ##### # # # # # #### # # # # # # ## # # ## # # # # # # # # # # # # # # # # # # ## # ###### ##### # # # # # # # # ### ## ## # # # # # ## # # ## # # # # # # # # # # # # # #### 

其他解决scheme可以被着色或粗体输出 。 那么如何在Python中轻松完成这些东西呢?

  • pyfiglet – http://www.figlet.org的纯Python实现;

     pip install pyfiglet 
  • 用于ANSI颜色格式的termcolor – helper函数

     pip install termcolor 
  • colorama – 多平台支持(Windows)

     pip install colorama 
 import sys from colorama import init init(strip=not sys.stdout.isatty()) # strip colors if stdout is redirected from termcolor import cprint from pyfiglet import figlet_format cprint(figlet_format('missile!', font='starwars'), 'yellow', 'on_red', attrs=['bold']) 

 $ python print-warning.py 

导弹

 $ python print-warning.py | 猫
 .___ ___。  __ _______。  _______。  __ __ _______ __
 |  \ / |  |  |  / |  / ||  |  |  |  |  ____ ||  |
 |  \ / |  |  |  |  (----`|(----`| | | | | | __ | |
 |  | \ / |  |  |  |  \ \ \ \ |  |  |  |  |  __ |  |  |
 |  |  |  |  |  |  .----)|  .----)|  |  |  |  `----。|  | ____ | __ |
 | __ |  | __ |  | __ |  | _______ / | _______ / | __ |  | _______ || _______ |(__)

PIL提供了一个非常简单的方法。 您可以将文本渲染到ab / w图像,并将该位图转换为stringstream,将黑白像素replace为字符。

 import Image, ImageFont, ImageDraw ShowText = 'Python PIL' font = ImageFont.truetype('arialbd.ttf', 15) #load the font size = font.getsize(ShowText) #calc the size of text in pixels image = Image.new('1', size, 1) #create ab/w image draw = ImageDraw.Draw(image) draw.text((0, 0), ShowText, font=font) #render the text to the bitmap for rownum in range(size[1]): #scan the bitmap: # print ' ' for black pixel and # print '#' for white one line = [] for colnum in range(size[0]): if image.getpixel((colnum, rownum)): line.append(' '), else: line.append('#'), print ''.join(line) 

它呈现下一个结果:

  ####### ## ####### ## ## ## ### ## ## ## ### ## ## ## ## ## ## ## ## ## ## ## ## ## ## #### ###### #### ###### ## ## ## ## ## ## ## ### ## ### ## ## ## ### ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ###### ## ## ## ## ## ## ## ## ## ###### ## ## ## ## # ## ## ## ## ## ## ## ## ## ## ## #### ## ## ## ## ## ## ## ## ## ## ## #### ## ## ## ## ## ## ## ## ## ## ## ## ### ## ## #### ## ## ## ## ######## ## ## ### ## ###