点击上方 "程序员小乐"关注公众号, 星标或置顶一起成长
每天早上8点20分, 第一时间与你相约
每日英文
Whatever you are facing today, remember to give yourself some credit for making it this far. You are stronger than you know.
无论你今天要面对什么,既然走到了这一步,就奋 斗下去,给自己一些肯定,你比自己想象中要坚强。
每日掏心话
生活中没有什么可怕的东西,人活一世,感性的同时,总是少不了理性的克制。
来自:小象 | 责编:乐乐
程序员小乐(ID:study_tech)第 629 次推文 图片来自网络
往日回顾:当你收到面试通知后,如何大大提升面试成功率?看这篇文章就对了!
正文
pip install pillow
#! /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:
pic = Ptrancefrom(args.filename,args.width,args.heigth)
pic.print_picture()
python prog3.py --width 45 --heigth 45 ascii_dora.png
欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,学习能力的提升上有新的认识,欢迎转发分享给更多人。
欢迎各位读者加入程序员小乐技术群,在公众号后台回复“加群”或者“学习”即可。
猜你还想看
阿里、腾讯、百度、华为、京东最新面试题汇集
关于如何实现一个 TCC 分布式事务框架的一点思考
如何用一句话激怒怒怒怒怒怒怒怒互联网人?
如何让 Mybatis 自动生成代码
为什么 IDEA 比 Eclipse 更好?
文章有问题?点此查看未经处理的缓存