python 文本文件转图片_在Python中将.txt文件转换为图像

importPILimportPIL.ImageimportPIL.ImageFontimportPIL.ImageOpsimportPIL.ImageDrawPIXEL_ON=0# PIL color to use for "on"PIXEL_OFF=255# PIL color to use for "off"defmain():image=text_image('content.txt')image.show()image.save('content.png')deftext_image(text_path,font_path=None):"""Convert text file to a grayscale image with black characters on a white background.

arguments:

text_path - the content of this file will be converted to an image

font_path - path to a font file (for example impact.ttf)

"""grayscale='L'# parse the file into lineswithopen(text_path)astext_file:# can throw FileNotFoundErrorlines=tuple(l.rstrip()forlintext_file.readlines())# choose a font (you can see more detail in my library on github)large_font=20# get better resolution with larger sizefont_path=font_pathor'cour.ttf'# Courier New. works in windows. linux may need more explicit pathtry:font=PIL.ImageFont.truetype(font_path,size=large_font)exceptIOError:font=PIL.ImageFont.load_default()print('Could not use chosen font. Using default.')# make the background image based on the combination of font and linespt2px=lambdapt:int(round(pt*96.0/72))# convert points to pixelsmax_width_line=max(lines,key=lambdas:font.getsize(s)[0])# max height is adjusted down because it's too large visually for spacingtest_string='ABCDEFGHIJKLMNOPQRSTUVWXYZ'max_height=pt2px(font.getsize(test_string)[1])max_width=pt2px(font.getsize(max_width_line)[0])height=max_height*len(lines)# perfect or a little oversizedwidth=int(round(max_width+40))# a little oversizedimage=PIL.Image.new(grayscale,(width,height),color=PIXEL_OFF)draw=PIL.ImageDraw.Draw(image)# draw each line of textvertical_position=5horizontal_position=5line_spacing=int(round(max_height*0.8))# reduced spacing seems betterforlineinlines:draw.text((horizontal_position,vertical_position),line,fill=PIXEL_ON,font=font)vertical_position+=line_spacing# crop the textc_box=PIL.ImageOps.invert(image).getbbox()image=image.crop(c_box)returnimageif__name__=='__main__':main()

你可能感兴趣的:(python,文本文件转图片)