1. 首页
  2. Python

python教你做出一个动态的字符人物!!网友:太牛了

“u003Cdivu003Eu003Cpu003E1.设计思路u003Cu002Fpu003Eu003Cpu003E如何把以.png的图片以不同字符把它形象的画出来呢?u003Cu002Fpu003Eu003Cpu003E我们知道其实一张图片是由很多不同像素点所组成的,每种像素点可以表示一种颜色。那么如果我们用不同的字符来代替各种像素点,是不是就可以将图片转化为字符画了?没错就是要用这个原理。u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp9.pstatp.comu002Flargeu002Fdfic-imagehandleru002F663ec3d4-7bad-41c5-b7f6-ec6705afa8a7″ img_width=”1024″ img_height=”512″ alt=”python教你做出一个动态的字符人物!!网友:太牛了” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E2.准备工作u003Cu002Fpu003Eu003Cpu003E为了实现我们本片博文所述的功能,不许得有一个叫做Pillow(PIL)的图像处理库u003Cu002Fpu003Eu003Cpu003E该库的安装方式如下u003Cu002Fpu003Eu003Cpreu003Epip install pillowu003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E我们今天所要使用的是该库中的Image模块.。其中会用到一个很重要的概念-灰度值(由图形颜色的深浅来决定)u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fdfic-imagehandleru002F20f5277e-f8d2-4ad3-a967-4397685e16b0″ img_width=”1023″ img_height=”657″ alt=”python教你做出一个动态的字符人物!!网友:太牛了” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fdfic-imagehandleru002Fcfeca79a-6338-4c2c-b5c2-92f1d664c44a” img_width=”1200″ img_height=”799″ alt=”python教你做出一个动态的字符人物!!网友:太牛了” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E3.代码实现u003Cu002Fpu003Eu003Cpreu003E#! u002Fusru002Fbinu002Fpythonu003Cbru003E#coding:utf8u003Cbru003Eimport argparseu003Cbru003Efrom PIL import Imageu003Cbru003Edef handle_command():u003Cbru003E ‘命令行参数处理’u003Cbru003E parser = argparse.ArgumentParser()u003Cbru003E parser.add_argument(‘filename’,help = ‘图片的路径’)u003Cbru003E parser.add_argument(‘-o’,’–output’,help = ‘是否输出文件’)u003Cbru003E parser.add_argument(‘–width’,type = int,default = 80)u003Cbru003E parser.add_argument(‘–heigth’,type = int,default = 80)u003Cbru003E #获取命令行参数u003Cbru003E return parser.parse_args()u003Cbru003Eargs = handle_command()u003Cbru003Eclass Ptrancefrom(object):u003Cbru003E ‘实现将图片转化为字符’u003Cbru003E def __init__(self,img,width,heigth):u003Cbru003E self.img = imgu003Cbru003E self.width = widthu003Cbru003E self.heigth = heigthu003Cbru003E self.ascii_char = list(“$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjftu002F\|()1{}[]?-_+~<>i!lI;:,\”^`’. “)u003Cbru003E def get_char(self,r,b,g,alpha = 256):u003Cbru003E ‘将256范围的灰度值映射到70个字符上’u003Cbru003E #灰度值为0时对应字符为空格u003Cbru003E if alpha == 0:u003Cbru003E return ‘ ‘u003Cbru003E length = len(self.ascii_char)u003Cbru003E #灰度值的计算公式u003Cbru003E gray = int(0.2126 *r + 0.7152*g + 0.0722*b)u003Cbru003E unit = (256.0 + 1)u002Flengthu003Cbru003E return self.ascii_char[int(grayu002Funit)]u003Cbru003E def print_picture(self):u003Cbru003E ‘打印图形’u003Cbru003E #打开图片u003Cbru003E im = Image.open(self.img)u003Cbru003E #设置图片像素的大小u003Cbru003E im = im.resize((self.width,self.heigth),Image.NEAREST)u003Cbru003E txt = “”u003Cbru003E for i in range(self.heigth):u003Cbru003E for j in range(self.width):u003Cbru003E txt += self.get_char(*im.getpixel((j,i)))u003Cbru003E txt += ‘\n’u003Cbru003E print txtu003Cbru003E def write_to_file(self):u003Cbru003E ‘将生成的字符图片写入到文件’u003Cbru003E if args.output:u003Cbru003E with open(args.output,’w’) as f:u003Cbru003E f.write(txt)u003Cbru003E else:u003Cbru003E with open(‘output.txt’,’w’) as f:u003Cbru003E f.write(txt)u003Cbru003Epic = Ptrancefrom(args.filename,args.width,args.heigth)u003Cbru003Epic.print_picture()u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E运行上述脚本u003Cu002Fpu003Eu003Cpreu003Epython prog3.py –width 45 –heigth 45 ascii_dora.pngu003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E选材的图片原图如下u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F1cede040367f4c70b4d87680a1a9489e” img_width=”153″ img_height=”153″ alt=”python教你做出一个动态的字符人物!!网友:太牛了” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E效果图如下u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F06115e3239944738a2ebe0a453652113″ img_width=”501″ img_height=”867″ alt=”python教你做出一个动态的字符人物!!网友:太牛了” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。u003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:python教你做出一个动态的字符人物!!网友:太牛了

主题测试文章,只做测试使用。发布者:逗乐男神i,转转请注明出处:http://www.cxybcw.com/12894.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code