刚入门学python,最近照着实验楼做了一个基础的练手项目:图像转字符画,里面用到了argparse和pillow-image。看了python关于这个函数的介绍和网上的一些教程,想把重点整理出来,正好最近发现前一天还挺明白的内容,第二天就忘的差不多了,整理成文章忘了还可以再看看。初学很可能有概念错误的地方,欢迎指正。
整体思路:使用argparse传入文件,选填输出的文件,定义图片大小(相较于input方法,argparse可以设置默认值)。pillow-image打开图片,根据argparse的参数高和宽重置图片大小,将图片位置和像素对应起来,像素可以转换成灰度,再根据灰度匹配字符。最后输出文件
argparse:argparse是python用于命令行参数/选项解析的标准模块。所谓命令行参数/选项,就是我们在执行python文件时输入的内容。读取文件内容有两种方法,一种是在源码里直接引用,另一种是从命令行输入。比如:一个python文件a.py,需要读取一个文件的内容,在命令行可以输入 python a.py b.txt,如果文件换成c.txt,可以直接输入python a.py c.txt,argparse就是python实现第二种读取方式的一种方法。
使用方法:导入模块importargparse
创建一个ArgumentParser对象:argparse.ArgumentParser()
添加参数parser.add_argument('file')、parser.add_argument('-o', '--output'),第一个是位置参数,输入命令行参数时直接输入,否则程序会报错;第二个是可选参数,根据参数长度使用-或--,先在命令行输入参数名 再输入对应函数,如不输入程序仍可执行。还有很多其他参数,如类型参数,可根据项目需要了解。
args = parser.parse_args(),运行命令行解析
pillow-image:pillow是python图像处理库,基本功能包括合成、剪切、粘贴、旋转等。
使用方法:导入模块fromPIL importImage
打开图片im = Image.open(file)
重新设置图片大小:im = im.resize((args.width,args.height))
根据位置获取像素,输出格式 r,g,b,a = im.getpixel((j, i))
小tips:getpixel输入的格式是元组,元组要加括号,调用函数也要加括号,所以格式是getpixel((x,y))
r,g,b,a中的a代表透明度,如果a=0 代表图片是透明的没有颜色
argparse输入可选参数时,格式要与生成的文件严格对应,注意加不加后缀名的区别