网站建设公司 电话销售没什么效果,搜索引擎seo优化,学子网站建设,上海360网站建设1.设计思路
如何把以.png的图片以不同字符把它形象的画出来呢?
我们知道其实一张图片是由很多不同像素点所组成的,每种像素点可以表示一种颜色。那么如果我们用不同的字符来代替各种像素点,是不是就可以将图片转化为字符画了?没…
1.设计思路
如何把以.png的图片以不同字符把它形象的画出来呢??
我们知道其实一张图片是由很多不同像素点所组成的,每种像素点可以表示一种颜色。那么如果我们用不同的字符来代替各种像素点,是不是就可以将图片转化为字符画了?没错就是要用这个原理。
2.准备工作
为了实现我们本片博文所述的功能,不许得有一个叫做Pillow(PIL)的图像处理库?
该库的安装方式如下
pip?install?pillow
我们今天所要使用的是该库中的Image模块.。其中会用到一个很重要的概念-灰度值(由图形颜色的深浅来决定)
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 = imgself.width = widthself.heigth = heigthself.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)/lengthreturn 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 txtdef 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 prog3.py --width 45 --heigth 45 ascii_dora.png
选材的图片原图如下?
效果图如下?
声明:本文内容来源于网络,如有侵权请联系删除
?