每日英文

Whatever you are facing today, remember to give yourself some credit for making it this far. You are stronger than you know.

无论你今天要面对什么,既然走到了这一步,就奋 斗下去,给自己一些肯定,你比自己想象中要坚强。

每日掏心话

生活中没有什么可怕的东西,人活一世,感性的同时,总是少不了理性的克制。







来自:小象 | 责编:乐乐

python 将字符转化为df python将字符转化为数字_ci

程序员小乐(ID:study_tech)第 629 次推文   图片来自网络






1.设计思路



如何把以.png的图片以不同字符把它形象的画出来呢?  



我们知道其实一张图片是由很多不同像素点所组成的,每种像素点可以表示一种颜色。 那么如果我们用不同的字符来代替各种像素点,是不是就可以将图片转化为字符画了? 没错就是要用这个原理。



2.准备工作



为了实现我们本篇博文所述的功能,不需得有一个叫做Pillow(PIL)的图像处理库 



该库的安装方式如下



pip install pillow



3.代码实现



#! /usr/bin/python	
#coding:utf8	

	
import argparse	
from PIL import Image	

	
def handle_command():    	
'命令行参数处理'    	
parser = argparse.ArgumentParser()    	
parser.add_argument('filename',help = '图片的路径')    	
parser.add_argument('-o','--output',help = '是否输出文件')    	
parser.add_argument('--width',type = int,default = 80)    	
parser.add_argument('--heigth',type = int,default = 80)	

	
#获取命令行参数    	
return parser.parse_args()	

	
args = handle_command()	

	
class Ptrancefrom(object):    	
'实现将图片转化为字符'    	
def __init__(self,img,width,heigth):        	
self.img = img        	
self.width = width        	
self.heigth = heigth        	
self.ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")	

	
def get_char(self,r,b,g,alpha = 256):        	
'将256范围的灰度值映射到70个字符上'        	
#灰度值为0时对应字符为空格        	
if alpha == 0:            	
return ' '        	

	
length = len(self.ascii_char)        	
#灰度值的计算公式        	
gray = int(0.2126 *r + 0.7152*g + 0.0722*b)	

	
unit = (256.0 + 1)/length        	
return self.ascii_char[int(gray/unit)]	

	
def print_picture(self):        	
'打印图形'        	
#打开图片        	
im = Image.open(self.img)        	
#设置图片像素的大小        	
im = im.resize((self.width,self.heigth),Image.NEAREST)	

	
txt = ""        	

	
for i in range(self.heigth):            	
for j in range(self.width):                	
txt += self.get_char(*im.getpixel((j,i)))            	
txt += '\n'        	
print txt	

	
def write_to_file(self):        	
'将生成的字符图片写入到文件'        	
if args.output:            	
with open(args.output,'w') as f:                	
f.write(txt)        	
else:            	
with open('output.txt','w') as f:                	
f.write(txt)	
pic = Ptrancefrom(args.filename,args.width,args.heigth)	
pic.print_picture()



运行上述脚本




选材的图片原图如下 




python 将字符转化为df python将字符转化为数字_python 将字符转化为df_02


效果图如下 


python 将字符转化为df python将字符转化为数字_Image_03

python 将字符转化为df python将字符转化为数字_Image_04