一、准备工作
1、准备一张简易照片,我是从百度上下载的一张树的照片,命名为tree.png(如下图),将其放置于要创建python的文件中(方便运行)
2、python(我的版本为python3.6)安装有pillow库
安装方式:pip install pillow(若可以pip安装的话,如果没有先安装pip工具)
3、创建的python文件中有个output.txt文件(有无皆可)
二、模块信息介绍
1.pillow:pillow实际是PIL(Python Image Libary)的升级版本,PIL功能非常强大,API也非常简单易用。但由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow。(借用别人博客解释)
2.argparse是Python内置的一个用于命令项选择与参数解析的模块,通过在程序中定义好我们需要的参数,argparse将会从sys.argv中解析出这些参数,并自动生成帮助和使用信息。argparser常用的几个函数:
(1)使用ArgumentParser()创建对象
(2)调用add_argument()方法添加参数
(3)使用parse_args()解析添加的参数
三、代码
创建名为ImageTransformAsciiArt.py的python文件
#coding:utf-8
from PIL import Image
import argparse
创建对象
parser = argparse.ArgumentParser()
添加参数
parser.add_argument('file')
parser.add_argument('-o','--output')
parser.add_argument('--width',type=int,default=80)
parser.add_argument('--height',type=int,default=80)
#获取(解析)参数
args = parser.parse_args()
#将图片要素信息传递给字符画
IMG = args.file
WIDTH = args.width
HEIGHT = args.height
OUTPUT = args.output
#我们使用灰度值公式将像素的RGB值映射到灰度值
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-T+G<>i!lI;:PASD. ")#最后一个需为空格,一般映射到图片空白部分,倒数第二个 字母尽量用.或|这种包含性强的,使图片轮廓感更突出
# 将256个灰度映射到字符上
def get_char(r,g,b,alpha = 256):
if alpha == 0:
return ' '
length = len(ascii_char)
gray = int(0.2126*r+0.7156*g+0.0722*b)#灰度映射公式
uint = 256/length #进行映射
return ascii_char[int(gray/uint)]
if __name__== '__main__':#对这个不理解下面有参考博客
im = Image.open(IMG)
im = im.resize((WIDTH,HEIGHT),Image.NEAREST)
txt = ''
for i in range(HEIGHT):
for j in range(WIDTH):
txt += get_char(*im.getpixel((j,i)))
txt += '\n'#每行末尾进行换行
print(txt)#命令框显示图形,有无皆可
if OUTPUT:
with open(OUTPUT,'w') as f:
f.write(txt)
else:
with open('output.txt','w') as f:#若无文件则创建
f.write(txt)
注:参考博客:http://blog.konghy.cn/2017/04/24/python-entry-program/
四、运行程序
在创建的Python文件中按住Shift并点击鼠标右键,选择“在此处打开命令窗口”,在命令窗口输入:python ImageTransformAsciiArt.py tree.png;
我们就会在命令框和output.txt中看到树的字符画了。
python新手学习总结,大神勿拍砖