python实现图片转字符画


Posted in Python onFebruary 19, 2021

本文实例为大家分享了python实现图片转字符画的具体代码,供大家参考,具体内容如下

源码(注释很详细):

# -*- coding=utf-8 -*-
###################################
#1:import argparse

#2:parser = argparse.ArgumentParser()

#3:parser.add_argument()

#4:parser.parse_args()

#解释:首先导入该模块;然后创建一个解析对象;然后向该对象中添加你要关注的命令行参数和选项,每一个add_argument方法对应一个你要关注的参数或选项;

#最后调用parse_args()方法进行解析;解析成功之后即可使用

###################################


from PIL import Image #从PIL模块中引入Image这个类
import argparse #引入argparse这个模块。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

#定义一个ascii的列表,其实就是让图片上的灰度与字符对应
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")

# 将256灰度映射到70个字符上
def get_char(r,g,b,alpha = 256): #这个调用跟im.getpixel函数有关,这个函数是根据图片的横纵坐标,把图片解析成r,g,b,alpha(灰度),有关的四个参数,所以这里输入参数是四个
 if alpha == 0: #如果灰度是0,说明这里没有图片
 return ' '
 length = len(ascii_char)#计算这些字符的长度
 gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)#把图片的RGB值转换成灰度值

 unit = (256.0 + 1)/length #257/length
 return ascii_char[int(gray/unit)] #这个相当于是选出了灰度与哪个字符对应。

if __name__ == '__main__':#如果是本程序调用,则执行以下程序

 im = Image.open(IMG)#打开图片
 im = im.resize((WIDTH,HEIGHT), Image.NEAREST)#更改图片的显示比例

 txt = ""#txt初始值为空

 for i in range(HEIGHT):#i代表纵坐标
 for j in range(WIDTH):#j代表横坐标
 txt += get_char(*im.getpixel((j,i)))#把图片按照横纵坐标解析成r,g,b以及alpha这几个参数,然后调用get_char函数,把对应的图片转换成灰度值,把对应值得字符存入txt中
 txt += '\n'#每行的结尾处,自动换行

 print(txt)#在界面打印txt文件

 #字符画输出到文件
 if OUTPUT:
 with open(OUTPUT,'w') as f:#文件输出
 f.write(txt)
 else:
 with open("output.txt",'w') as f:#文件输出
 f.write(txt)

使用指南:

进入程序所在目录:输入图示命令:python ascii.py lanpang.png,ascii.py是程序名,lanpang.png是图片名

python实现图片转字符画

图片:lanpang.png

python实现图片转字符画

效果图:

python实现图片转字符画

图片太大,截图不全,用Windows命令行打开看看,文件为output.txt

windows命令行打开文本文件的命令是:type 文件名

例如:type output.txt

python实现图片转字符画

打开后效果图:

python实现图片转字符画

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现提取百度搜索结果的方法
May 19 Python
Python科学计算之NumPy入门教程
Jan 15 Python
浅谈Python接口对json串的处理方法
Dec 19 Python
对python中if语句的真假判断实例详解
Feb 18 Python
详解Django 时间与时区设置问题
Jul 23 Python
用Python调用win命令行提高工作效率的实例
Aug 14 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
Python转换itertools.chain对象为数组的方法
Feb 07 Python
Python 安装 virturalenv 虚拟环境的教程详解
Feb 21 Python
Python 多进程原理及实现
Dec 21 Python
python Matplotlib基础--如何添加文本和标注
Jan 26 Python
python中操作文件的模块的方法总结
Feb 04 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 #Python
python 基于DDT实现数据驱动测试
Feb 18 #Python
详解解决jupyter不能使用pytorch的问题
Feb 18 #Python
python 使用openpyxl读取excel数据
Feb 18 #Python
Python用SSH连接到网络设备
Feb 18 #Python
python 实现IP子网计算
Feb 18 #Python
详解python3 GUI刷屏器(附源码)
Feb 18 #Python
You might like
CI(Codeigniter)的Setting增强配置类实例
2016/01/06 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
网页自动刷新,不产生嗒嗒声的一个解决方法
2007/03/27 Javascript
script标签属性用type还是language
2015/01/21 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
AngularJS 指令的交互详解及实例代码
2016/09/14 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
2017/07/12 Javascript
javascript 面向对象实战思想分享
2017/09/07 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
微信小程序实现的自定义分享功能示例
2019/02/12 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
[01:39]2014DOTA2国际邀请赛 Newbee经理CU专访队伍火力全开
2014/07/15 DOTA
跟老齐学Python之做一个小游戏
2014/09/28 Python
Python易忽视知识点小结
2015/05/25 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
python实现决策树分类
2018/08/30 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
Python任意字符串转16, 32, 64进制的方法
2019/06/12 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
Python遍历字典方式就实例详解
2019/12/28 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
表单button的outline在firefox浏览器下的问题
2012/12/24 HTML / CSS
Hunter Boots美国官方网站:赫特威灵顿雨靴
2018/06/16 全球购物
印度服装购物网站:Limeroad
2018/09/26 全球购物
ORACLE十问
2015/04/20 面试题
毕业自我鉴定范文
2013/11/06 职场文书
《灯光》教学反思
2014/02/08 职场文书
会计助理岗位职责
2014/02/17 职场文书
2014年关工委工作总结
2014/11/17 职场文书
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL