通过前文介绍,大体上可以用学过的知识做一些东西了。

这里简单介绍下python参数解析argparse命令。

使用argparse需要引用

 import argparse

然后调用

parser = argparse.ArgumentParser() 

ArgumentParser()函数可以传一些参数

parser = argparse.ArgumentParser(description='This is a PyMOTW sample program')

参数有很多种类型,读者自己查阅,参考资料的链接:

https://blog.ixxoo.me/argparse.html

接下来添加参数

parser.add_argument('file')

parser.add_argument('-o', '--output')

添加参数 -表示可选参数,用于一个字符,表示缩写

--也是可选参数,用于两个或以上的字符

最后是参数解析  

parser.parse_args(['-o', 'output.txt'])

parse_args()运行时,会用'-'来认证可选参数,剩下的即为位置参数。

位置参数不可缺少,可选参数可提供默认值

如果python程序运行,parse_args()会依次处理传入参数,

第一个参数为该python程序的文件名,其余的依次为传入参数。

这些文字看不懂不要紧,试着看看下边的程序和运行结果

#-*-coding:utf-8-*-

import argparse

#命令行输入参数处理
parser = argparse.ArgumentParser() parser.add_argument('file') #输入文件
parser.add_argument('-o', '--output') #输出文件
parser.add_argument('--width', type = int, default = 50) #输出字符画宽
parser.add_argument('--height', type = int, default = 30) #输出字符画高 #获取参数
args = parser.parse_args() IMG = args.file
WIDTH = args.width
HEIGHT = args.height
OUTPUT = args.output print("IMG is %s" %(IMG))
print("WIDTH is %d" %(WIDTH))
print("HEIGHT is %d" %(HEIGHT))
print("OUTPUT is %s" %(OUTPUT))

这个程序就是解析命令行参数,然后将输入的参数打印出来

如果不输入参数直接python test.py 试试?

提示缺少位置参数file

试试python test.py test.png

四个命令行参数打印出来了

--height 可选参数为默认值30

--width 可选参数为默认值50

file 位置参数为test.png

-o 为--output的缩写为None,因为没提供默认值。我也没输入-o参数

所以为None

输入python test.py test.png --width 30 -- height 50 -o output.txt

用全称--output录入也可以

python test.py test.png --width 30 -- height 50 --output output.txt

这个过了就可以往下做了,下面安装PIL库,PIL为python处理图形图像的基本库

windows安装的方式为:

http://jingyan.baidu.com/article/ff42efa929e6c8c19f220254.html

Linux安装方式为:

点击链接

下面编写图片转字符画程序:

将文件命名为print.py

1 包含库和函数,定义基本的字符序列

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 = 50) #输出字符画宽
parser.add_argument('--height', type = int, default = 30) #输出字符画高 #获取参数
args = parser.parse_args() IMG = args.file
WIDTH = args.width
HEIGHT = args.height
OUTPUT = args.output ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")

2 编写转换函数

# 将256灰度映射到70个字符上
def get_char(r,g,b,alpha = 256):
if alpha == 0:
return ' '
length = len(ascii_char)
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b) unit = (256.0 + 1)/length
return ascii_char[int(gray/unit)]

0.2126 * r + 0.7152 * g + 0.0722 * b为官方提供的

灰度计算公式,unit表示一个单元占多少灰度,

gray/unit可以找到对应的单元,从而转换为字符。

3调用get_char完成转换

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)

Image为PIL提供的类,可以看看

Image基本功能

im.getpixel((j,i)) 通过传入横纵坐标,返回tuple

tuple中数据依次为r,g,b,alpha

之前讲过可以通过*() 或*[]实现逐个元素传入。

get_char(*im.getpixel((j,i)))将参数传入返回字符。

之后分别将字符打印出来,并写入文件。

源码下载地址: python图片转字符画

效果如下:

谢谢关注,我的公众号:

												

python自学笔记(二)的更多相关文章

  1. python自学笔记二

    :#进入循环重输文0件名 pass else:#退出循环,等待创建 break fobj = open(fname,'a')#打开或创建文件 #接下来写入文件 all = [] print('ente ...

  2. python自学笔记

    python自学笔记 python自学笔记 1.输出 2.输入 3.零碎 4.数据结构 4.1 list 类比于java中的数组 4.2 tuple 元祖 5.条件判断和循环 5.1 条件判断 5.2 ...

  3. python自学笔记(一)

    我没学过python,通过网上和一些图书资料,自学并且记下笔记. 很多细节留作以后自己做项目时再研究,这样能更高效一些. python基础自学笔记 一.基本输入和输出 pthon3.0用input提示 ...

  4. Python 学习笔记二

    笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...

  5. python学习笔记(二)、字符串操作

    该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...

  6. python自学笔记(二)python基本数据类型之字符串处理

    一.数据类型的组成分3部分:身份.类型.值 身份:id方法来看它的唯一标识符,内存地址靠这个查看 类型:type方法查看 值:数据项 二.常用基本数据类型 int 整型 boolean 布尔型 str ...

  7. Python 自学笔记(二)第一个程序 Hello World

    一 打印 Hello world 1,输入 Python “Hello world” 即可 2,脚本文件输出Hello World 在命令行(cmd),输入 python 文件路径+文件名 3,为什么 ...

  8. Python 自学笔记(二)

    3-1.条件判断 3-1.条件判断 3-1-1.单项判断 if 3-1-2.双向判断 if...else... 3-1-3.多向判断 if...elif...else 3-2.if嵌套 4.输入 4- ...

  9. python自学笔记一

    之前看过一段时间的小甲鱼零基础自学python,b站上有高清免费资源[av4050443],但是作为零基础实在学得艰难,下载了python核心编程pdf,在这里做一些笔记. 虽然使用的是第二版的教材, ...

随机推荐

  1. nginx启动、停止重启

    启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 例如: [root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /us ...

  2. CMDBuild2.4.3安装配置

    参考文档: 官网:http://www.cmdbuild.org/en 参考:http://blog.csdn.net/shawn210/article/details/70230248 本文涉及CM ...

  3. Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向

    原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...

  4. mac 的一些使用技巧

    1. mac有一个自带的服务器环境, 目录路径 /Library/WebServer/Documents 打开终端  a. 启动 sudo apachectl start b. 重新启动 sudo a ...

  5. WPF和Expression Blend开发实例:模拟QQ登陆界面打开和关闭特效

    不管在消费者的心中腾讯是一个怎么样的模仿者抄袭者的形象,但是腾讯在软件交互上的设计一直是一流的.正如某位已故的知名产品经理所说的:设计并非外观怎样,感觉如何.设计的是产品的工作原理.我觉得腾讯掌握了其 ...

  6. ZY、

  7. CCF——图像旋转201503-1

    问题描述 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度. 计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可. 输入格式 输入的第一行包含 ...

  8. [cnbeta]微软最强数据中心级操作系统

    微软近日发表了一篇介绍Windows系统内核的博文,期间为了展示Windows的强大扩展性,放出了一张非常震撼的Windows任务管理器截图:乍一看似乎没啥特别的,几十甚至上百个逻辑核心的系统并不罕见 ...

  9. 小记IptabLes和IptabLex病毒清理过程

    去年有台Linux服务器被黑了,看了500万行日志(现在觉得当时好厉害呀),反正当时的日志文件有700Mb以上大.前两天师兄告诉我,信息中心的老师给他说我们有台服务器应该是被人入侵了,当作内网的跳板, ...

  10. CSS中可以和不可以继承的属性【转】

    一.无继承性的属性 1.display:规定元素应该生成的框的类型 2.文本属性: vertical-align:垂直文本对齐 text-decoration:规定添加到文本的装饰 text-shad ...