#!/usr/bin/env python |
# encoding: utf-8 |
from PIL import Image |
class charsetPicture: |
''' |
This is a main Class, the file contains all documents. |
One document contains paragraphs that have several sentences |
It loads the original file and converts the original file to new content |
Then the new content will be saved by this class |
注意根据图片的长宽比调整宽度高度,对比度高的图片效果更好 |
''' |
def __init__( self ): |
self .char = list ( "$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. " ) |
self .width = 130 |
self .height = 80 |
def hello( self ): |
''' |
This is a welcome speech |
:return: self |
''' |
return self |
def get_char( self , r, g, b, alpha = 256 ): |
''' |
将256灰度映射到70个字符上,也就是RGB值转字符的函数 |
:alpha: 透明度 |
:return: self |
''' |
if alpha = = 0 : |
return ' ' |
length = len ( self .char) |
gray = int ( 0.2126 * r + 0.7152 * g + 0.0722 * b) |
unit = ( 256.0 + 1 ) / length |
return self .char[ int (gray / unit)] |
def run( self ): |
''' |
The program entry |
''' |
im = Image. open ( 'assets/picture.jpeg' ) |
im = im.resize(( self .width, self .height), Image.NEAREST) |
txt = '' |
for i in range ( self .height): |
for j in range ( self .width): |
txt + = self .get_char( * im.getpixel((j, i))) |
txt + = '\n' |
print (txt) |
with open ( 'handler.txt' , 'w' ) as f: |
f.write(txt) |
if __name__ = = '__main__' : |
charsetPicture().hello().run() |