实现的效果:

                                                                                                             
 
需要掌握的知识:
1):Python的基础知识
2):argparse库
3):piilow的Image
 
#encoding=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) #输出字符画的高度 #调用parse_args()方法进行解析
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;:,\"^`'. ") #字符与RGB的对应的映射关系
def get_char(r,g,b,alpha=256):
if alpha == 0 :
return ' '
lenght = len(ascii_char)
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
unit = (256.0 + 1)/lenght
return ascii_char[int(gray/unit)] #如果是自己执行的话,就执行下面的,如果是作为导入模块就不执行
if __name__ == '__main__':
im = Image.open(IMG)
#这里是转换图片的大小,然后第二个参数表示图片的质量,一共有4种,低质量Image.NEARSET,双线性Image.BILINEAR,三次样条插值Image.BICUBIC,高质量Image.ANTIALIAS
im = im.resize((WIDTH,HEIGHT),Image.NEAREST)
txt = "" for i in range(HEIGHT):
for j in range(WIDTH):
#im.getpixel:根据坐标取得RGB对应的r,g,b三个值,这里的getpixel((i,j))的两个括号非常重要
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)
 
总结:
1:argparse命令行参数处理的使用过程
      1):创建解析对象  parser = argparse.ArgumentParser()
      2):在创建的对象中添加你所关注的命令行参数和选项   parser.add_argument()
      3):调用parse.args()方法进行解析
      4):使用
 
2:im = im.resize((WIDTH,HEIGHT),Image.NEAREST) 这里的resize()是转换像素的意思,第二个参数表示转换的质量
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

第一个Python小项目:图片转换成字符图片的更多相关文章

  1. 使用nvDXT.exe把图片转换成dds图片【转】

    从nvidia官网下载工具包DDS Utilities [https://developer.nvidia.com/legacy-texture-tools] 转换图片格式需要的工具是 nvdxt.e ...

  2. java将白色背景图片转换成透明图片

    package evecom.image; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.Buffe ...

  3. Python将GIF图片转换成png图片帧

    效果图: 转换之后保存到文件夹中: 代码如下:(第三方库pillow,安装方法:在cmd中输入:  pip install pillow) from PIL import Image import o ...

  4. C#将图片转换成字符画

    先看一下效果图 在Main方法中调用(首先要添加程序集System.Drawing,然后引入命名空间System.Drawing) ConvertToChar(new Bitmap(@"D: ...

  5. 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果

    去年盛夏之时,曾写过“小tip: 使用CSS将图片转换成黑白”一文,本文的模式以及内容其实走得是类似路线.CSS3 → SVG → IE filter → canvas. 前段时间,iOS7不是瓜未熟 ...

  6. [转] 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果 ---张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=3804 去年盛夏之时, ...

  7. 小tip: 使用CSS将图片转换成黑白(灰色、置灰)[转]

        小tip: 使用CSS将图片转换成黑白(灰色.置灰) 这篇文章发布于 2012年08月19日,星期日,20:41,归类于 css相关, SVG相关. 阅读 159943 次, 今日 146 次 ...

  8. 用Python将word文件转换成html(转)

    用Python将word文件转换成html   序 最近公司一个客户大大购买了一堆医疗健康方面的科普文章,希望能放到我们正在开发的健康档案管理软件上.客户大大说,要智能推送!要掌握节奏!要深度学习!要 ...

  9. 使用CSS将图片转换成黑白(灰色、置灰)z转

    小tip: 使用CSS将图片转换成黑白(灰色.置灰) by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.c ...

随机推荐

  1. MVC强类型视图,详细信息展示【五】

    一.在MVC三种讲到两种后端发送数据到前端的方法,今天讲的是第三种,发送过去的方法 [强类型视图]. 1. 强类型视图,就是指在传递的过程中只能传递一种类型的数据到该视图中,就比如默认的传递的数据类型 ...

  2. ubuntu解压命令(转)

    -c: 建立压缩档案 -x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的参数是 ...

  3. openssh升级,打补丁

    以Root用户上传升级包至/home/dou/system openssh-7.5p1.tar.gz openssl-1.0.2l.tar.gz zlib-1.2.11.tar.gz l  安装所需包 ...

  4. [JavaScript] 给input标签传值

    body: <input type="text" style="width: 240px;" name="orgname" id=&q ...

  5. 【Mybatis】【2】处理大于号小于号及其他特殊字符

    正文: 问题:用<的时候会报错.因为是xml文件,会被识别成标签 解决方法: 原sql:SELECT * FROM TABLE T WHERE T.AGE < 10; 1,转义字符.用转义 ...

  6. linux系统下如何挂载NTFS移动硬盘

    前言 数据迁移是我们经常会遇到的,有时候做大数据量迁移时,为了快速迁移大数据,有可能在Linux服务器上临时挂载NTFS格式的移动硬盘, 一般情况下,Linux是识别不了NTFS格式移动硬盘的(需要重 ...

  7. mysql 表中已经存在数据 修改字段类型 varchar(11) 改为 int(11)

    update tablename set s_role = '' alter table  tablename  modify column s_role int(11)

  8. cl 命令行配置

    VS2013啊什么老是要license,而且打开还特别庞大. 当想测试一个小东西的时候,我并不需要创建一个很大的工程,只需要编译下,运行下即可. 这时候采用 cl 命令编译会快很多. 下面是步骤: 1 ...

  9. ES5和ES6那些你必须知道的事儿(二)

    ES5和ES6那些你必须知道的事儿 ES5新增的东西 二.对象方法 1.Object.getPrototypeOf(object) 返回对象的原型 function Pasta(grain, widt ...

  10. find补充和目录结构

    第1章 find找出文件然后通过ls -l显示文件的详细信息 找出/oldboy 以.sh结尾的文件,显示文件详细信息 1.1 方法一: find /oldboy/ -type f -name &qu ...